Linux
如何將匹配模式的行附加到上一行
前任:
輸入文件
****************** .WER + aaa bbb ccc + ddd eee + fff ggg hhh ****************** .SDF + zzz xxx yyy + iii + kkk lll ****************** .XCV + uuu vvv ggg + hhh qqq + rrr ttt jjj ******************
期望的輸出:
****************** .WER aaa bbb ccc ddd eee fff ggg hhh ****************** .SDF zzz xxx yyy iii kkk lll ****************** .XCV uuu vvv ggg hhh qqq rrr ttt jjj ******************
我想將匹配模式“+”的行附加到前一行,並用空格替換“+”。
任何人都可以通過使用 awk 或 sed(甚至 grep)命令來解決這個問題嗎?
我是 Linux 的初學者。請解釋整個命令行的細節。
您用 /linux 標記了您的問題,因此您可能正在使用 GNU
sed
。然後您可以使用該-z
選項在一個緩衝區中處理整個文件並使用:sed -z 's/\n+//g'
這意味著
s
將每個換行符 (\n
) 後跟一個+
符號替換為空,這意味著加入+
從前一個開始的行,刪除+
.
我帶來了這個
awk
:awk 'BEGIN {RS=""}{gsub(/\n\+/,"", $0); print $0}' file
輸出:
****************** .WER aaa bbb ccc ddd eee fff ggg hhh ****************** .SDF zzz xxx yyy iii kkk lll ****************** .XCV uuu vvv ggg hhh qqq rrr ttt jjj ******************