2017-10-20 32 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

相關問題