我有一些文本文件,如下所示。我想將這些文件的內容合併成一個。將文件內容加入新文件
文件中的
>AXC
145
146
147
>SDF
1
8
67
>FGH
文件B
>AXC
>SDF
12
65
>FGH
123
156
190
期望輸出中
新文件
>AXC
145
146
147
>SDF
1
8
67
12
65
>FGH
123
156
190
您的幫助將不勝感激!
我有一些文本文件,如下所示。我想將這些文件的內容合併成一個。將文件內容加入新文件
文件中的
>AXC
145
146
147
>SDF
1
8
67
>FGH
文件B
>AXC
>SDF
12
65
>FGH
123
156
190
期望輸出中
新文件
>AXC
145
146
147
>SDF
1
8
67
12
65
>FGH
123
156
190
您的幫助將不勝感激!
awk '
/^>/ { key=$0; if (!seen[key]++) keys[++numKeys] = key; next }
{ vals[key] = vals[key] ORS $0 }
END{ for (keyNr=1;keyNr<=numKeys;keyNr++) {key = keys[keyNr]; print key vals[key]} }
' fileA fileB
>AXC
145
146
147
>SDF
1
8
67
12
65
>FGH
123
156
190
如果你真的想前置的空格添加到「>自衛隊」從的fileA值,告訴我們爲什麼這對一個案件,但不是「> AXC」這樣我們就可以編寫一個合適的解決方案。
比Ed的回答更短的位
awk '/^>/{a=$0;next}{x[a]=x[a]$0"\n"}END{for(i in x)printf"%s\n%s",i,x[i]}'
塊將在未指定的順序進行打印。通過>
字符
OFS="\n"
RS=">"
單獨的記錄是有數量的它自己的路線。a[i]=a[i] $0
將字段添加到第一個字段的索引數組中。rt=RT
是添加>
字符指數$ awk 'BEGIN{ RS=">"; OFS="\n" }
{i=rt $1; $1=""; a[i]=a[i] $0; rt=RT; next}
END { for (i in a) {print i a[i] }}' d6 d5
>SDF
12
65
1
8
67
>FGH
123
156
190
>AXC
145
146
147
請添加一些解釋。僅有代碼的答案對未來的讀者不太有用,並且不解釋OP的錯誤或如何解決問題。 – Xufox