Cat
通過標題組合目錄中的文件並省略共享內容
所以我在這裡發現了一個與我想在這裡做的相反的問題:Concatenate multiple files with same header。
我正在嘗試根據標題中的“>”字元將具有相同子字元串的對應文件的數百個文件中的一個目錄中的 2 個文件合併或連接到一個文件中。每個文件中有數千個標題,與我附加的連結中提出的問題相反,標題以外的內容是相同的,所以我不想更改任何以“>”開頭的行。
本質上,我想通過共享字元“>”將文件 1 與文件 2 組合起來,並按順序保留文件 1 的內容。
File1 > MGBNCNOSNC_142 9u2o4840204a9 > MGBNCNOSNC_143 AOISCJNWDCSNDCCW > MGBNCNOSNC_144 AOISCJ40204DZZW
File2 >King_Henry >Queen_jerry >Jack_jill
Output > MGBNCNOSCNC_142 > King_henry 9u2o4840204a9 > MGBNCNOSCNC_143 > Queen_jerry AOISCJNWDC > MGBNCNOSNC_144 > Jack_jill gefSCJ40204DZZW
感謝您的幫助,讓我知道我是否可以更清楚!
您可以將 的行讀
File2
入索引 awk 數組,然後將它們依次附加到 的相應行File
awk ' NR==FNR {a[i++]=$0; next} /^>/ {$0 = $0" "a[j++];} {print} ' File2 File1
或者,如果您有 GNU sed(帶有
R
副檔名),您可以嘗試sed '/^>/ R File2' File1 | sed '/^>/ {N;s/\n/ /}'
如果
File1
要匹配的每一行都恰好有一個附加行,則另一種選擇可能是將空格加倍File2
,然後paste
將文件放在一起sed 'G' File2 | paste -d ' ' File1 -
儘管這會導致不匹配行中出現額外的尾隨空格;
File2
如果這是不可取的,您可以在每行的開頭插入一個空格,並且paste
它們沒有分隔符sed 's/^/ /; G' File2 | paste -d '' File1 -