首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将不以特定正则表达式开头的行添加到前一行

将不以特定正则表达式开头的行添加到前一行
EN

Stack Overflow用户
提问于 2012-06-23 13:42:00
回答 2查看 528关注 0票数 2

短消息;传递;“+99999999999”;“2012.06.23:21”;“”;“

xxxxxxxxxxxx

xxxxxxxxxxxx

xxxxxxxxxxxx“

我需要任何不以“sms;交付;”开头的行来添加到前面的行中。也就是说,得到这样的一条线:

短信;递送;“+99999999999”;“”;“2012.06.23:21”;“”;“

那是一行。另外,删除/替换xxxxx(内容)部分中的任何双引号也是有帮助的。

短信;递送;“+99999999999”;“”;“2012.06.23 09:21";"";"xxxxxxxxxxxxx,

因此,上面的行将被转换为这个(双引号转换为单引号):

短信;递送;“+99999999999”;“”;“2012.06.23 09:21";"";"xxxxxxxxxxxxx,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-23 14:32:51

下面的sed命令似乎可以满足您的需要(编辑:一个简短的sed命令,用于筛选引号):

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

简短的解释:

代码语言:javascript
复制
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;联机时才将"更改为'

票数 3
EN

Stack Overflow用户

发布于 2012-06-23 14:43:00

这可能对你有用:

代码语言:javascript
复制
sed ':a;$!N;/\nsms;deliver;/!s/\n//;ta;:b;s/\(;".*\)"\([^";]*\)"\([^";]*"\)$/\1'\''\2'\''\3/;tb;P;D' file

编辑:

"问题的测试数据:

代码语言:javascript
复制
echo 'sms;deliver;"+99999999999";"";"";"2012.06.23 09:21";"";"xxxxxxxxxxxxx xxxxxxxx, xxxxxxxxxxxx xxxxxxxxxxxx "xxxx"xxxxxxxx"' >/tmp/a
sed ':a;$!N;/\nsms;deliver;/!s/\n//;ta;:b;s/\(;".*\)"\([^";]*\)"\([^";]*"\)$/\1'\''\2'\''\3/;tb;P;D' /tmp/a
sms;deliver;"+99999999999";"";"";"2012.06.23 09:21";"";"xxxxxxxxxxxxx xxxxxxxx, xxxxxxxxxxxx xxxxxxxxxxxx 'xxxx'xxxxxxxx"
sed 's/xx/"&"/g' /tmp/a >/tmp/b
sed ':a;$!N;/\nsms;deliver;/!s/\n//;ta;:b;s/\(;".*\)"\([^";]*\)"\([^";]*"\)$/\1'\''\2'\''\3/;tb;P;D' /tmp/b
sms;deliver;"+99999999999";"";"";"2012.06.23 09:21";"";"'xx''xx''xx''xx''xx''xx'x 'xx''xx''xx''xx', 'xx''xx''xx''xx''xx''xx' 'xx''xx''xx''xx''xx''xx' ''xx''xx'''xx''xx''xx''xx'"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11169974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档