2017-03-15 88 views
0

比方說,我有一個CSV文件格式,像這樣:使用sed查找並替換第二次出現的行首?

1,Mark 
1,Smith 
2,Janet 
2,Smith 

,我需要做這樣的:

1,Mark Smith 
2,Janet Smith 

我需要後更換任何給定行首戰的每次出現首先,將沒有開啓器的行連接到最後一行。我怎樣才能做到這一點?

+2

你爲自己做了什麼? – Inian

回答

1

下一行追加到圖案空間和刪除換行符後跟數字:

sed 'N;s/\n[0-9]//;s/,/ /2g' file 

在情況下,有可能只有一個或兩個以上的匹配項:

sed ':a;N;s/^\([0-9][0-9]*\)\(.*\) *\n\1,/\1\2 /;ta;P;D;' file 
+0

你可能想刪除第二個或更多的逗號並用空格替換 – potong

+0

@potong謝謝,我編輯過。 – SLePort

0

隨着AWK是更容易,並且無論您可能有多少次出現或無論數據是否排序,都將工作得很好:

awk 'BEGIN{FS=OFS=","}{!a[$1]?a[$1]=$0:a[$1]=a[$1] " " $2}END{for (i in a) print a[i]}' file1 
+0

任何人都可以知道在記事本++中這個例子的正則表達式是什麼? –