2011-08-23 55 views
2

我想插入1號線,4,8,等的值後加上逗號使用SED,sed的 - 在純文本文件

sed '0-4 s/$/,/' in.txt > in2.txt 

每4個行出於某種原因,這個ISN之後插入一個逗號不工作,所以我想知道是否有人使用awk,sed或其他方法來解決這個問題。

我得到的錯誤是

sed: 1: "0-4 s/$/,/": invalid command code - 

目前我的數據是這樣的:

  City 
     Address 
     Zip Code 
     County

,我是想這樣

  City, 
     Address 
     Zip Code 
     County 

大加讚賞格式化。

回答

3

0-4確實不是格式正確的sed語法。我會用awk來做這件事,但是要做到這一點很容易。

sed 's/$/,/;n;n;n' file 

其中替換一條線並打印,然後打印下三行不取代,然後從腳本的開頭重新開始;或

awk 'NR % 4 == 1 {sub(/$/,",")} {print}' 

如果行號模4爲1,則進行替換,然後無條件地打印。

Sed的尋址模式有時令人失望;沒有標準的計算線偏移的方法,相對於或參考例如文件的結尾。當然,awk是比較複雜的,但是如果你只能學習其中一個,肯定會去awk。 (或者在這個時代,Python或Perl的 - 一個更好的投資)

+1

非常感謝你,那工作!一定會給予awk更多的關注。 – pbojinov

2

這可能會爲你工作(GNU SED):

sed '1~4s/$/,/' file