2017-10-20 36 views
0

我想在符号之间插入字符串,但符号是连续的。 像';;;;;;;;;;;;;''我可以使用echo ';;;;;;;;;;' | sed 's/\;\;/\;na\;/g',但输出将是;na;;na;;na;;na;;na;如何在Linux中以连续模式插入字符串

我想要的是;na;na;na;na;na;na;na;na;na;na;

[更新更具体的问题]

像 'xx;;string;;;string;;string;;;;'
我怎样才能把它变成xx;na;string;na;na;string;na;string;na;na;na;

我想;;” 之间有娜在所有空白处 。它有任何命令它会起作用吗? 有没有可以使用的命令?

回答

2

另一个awk办法满足需求量的

+1

感谢您的回答 – sowrdking

+0

对于第一个,它会有增加“;”最后。 第二个人是美好的。 – sowrdking

+0

@sowrdking这是因为你修改了你的问题,它只在当时有效。现在我删除了旧命令,只保留解决当前陈述问题的命令。 –

0

为什么不只是做...

$ echo ';;;;;;;;;;' | sed 's/\;/\;na/g' 
;na;na;na;na;na;na;na;na;na;na 

如果需要尾随;做...

$ echo `echo ';;;;;;;;;;' | sed 's/\;/\;na/g'`\; 
;na;na;na;na;na;na;na;na;na;na; 
3

试试这个方法sed

sed 's/;/&na/g;s/$/;/' <<< ';;;;;;;;;;' 

输出:

;na;na;na;na;na;na;na;na;na;na; 

说明:

s/;/&na/g - 美联社挂起na在每个;
s/$/;/ - 在该行的末尾添加;,这样它会使用AWK

$ echo "xx;;string;;;string;;string;;;;" | awk -v FS="" '{ for(i=1; i<=NF; i++) if ($i==";" && $(i-1)==";") printf "na"$i; else printf $i; printf RS}' 
xx;na;string;na;na;string;na;string;na;na;na; 
+0

哈,你只是有点快... –

+0

呀,谢谢:) - – Kalanidhi

+0

感谢您的回答 – sowrdking

0

awk '{i=0; while(i++<2)gsub(/;;/,";na;")}1' 

或者使用sed

sed ':l;s/;;/;na;/;tl' 
+0

感谢您的帮助 – sowrdking

相关问题