gpt4 book ai didi

sed - 将不以特定正则表达式开头的行添加到上一行

转载 作者:行者123 更新时间:2023-12-02 05:39:49 25 4
gpt4 key购买 nike

sms;deliver;"+99999999999";"";"";"2012.06.23 09:21";"";"xxxxxxxxxxxxx xxxxxxxx,
xxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxxx"

我需要任何不以“sms;deliver;”开头的行要添加到上一行。即得到这样一条线:

sms;deliver;"+99999999999";"";"";"2012.06.23 09:21";"";"xxxxxxxxxxxxx xxxxxxxx, xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx"

^ 那是单行。删除/替换 xxxxx(content) 部分中的任何双引号也很有帮助。

sms;deliver;"+99999999999";"";"";"2012.06.23 09:21";"";"xxxxxxxxxxxxx xxxxxxxx, xxxxxxxxxxxx xxxxxxxxxxxx "xxxx"xxxxxxxx"

所以上面的行会被转换成这样(双引号转换成单引号):

sms;deliver;"+99999999999";"";"";"2012.06.23 09:21";"";"xxxxxxxxxxxxx xxxxxxxx, xxxxxxxxxxxx xxxxxxxxxxxx 'xxxx'xxxxxxxx"

最佳答案

下面的 sed 命令似乎可以满足您的需求(编辑:开头的一个简短的 sed 命令,用于过滤引号):

sed '/^sms;deliver;/!'"y/\"/'/" yourfile | sed -n '/^sms;deliver;/!b;:r;${p;b};N;/\nsms;deliver;/!{s/\n//;br};P;s/.*\n//;br'

一个简短的解释:

sed -n '# not print by default
/^sms;deliver;/!b # if line not starting with the pattern, goto end
:r #label r
${p;b} # if last line, print & exit
N # read new line, append to pattern space
/\nsms;deliver;/!{s/\n//;br} # if appended line doesn't start with pattern,
# remove newline & goto r
P # print everything up to the newline
s/.*\n//;br # remove what was just printed, goto r'

开头的 sed 只在 sms;delivered; 不在一条线上时将 " 更改为 ';

关于sed - 将不以特定正则表达式开头的行添加到上一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11169974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com