Bash
將多行的內容收集到一個輸出中
假設我有一個包含大量內容的文本文件,包括以下行:
... ... ABCD1 1234 12345 XYZ foo bar 1234597890 ... DEFG2 5678 56789 XYZ foo bar 0987654321 ... ...
我需要通過使用提取查找數據序列
grep -C1 "XYZ"
。現在我需要做的是,組裝看起來像這樣的輸出:ABCD1 1234567890 12345 1234 DEFG2 0987654321 56789 5678
我知道我可以用
grep -z "XYZ"
它來擺脫“我不在乎”這一行,並用awk
它來從一行中提取數據以按照我想要的方式組裝它。但我缺少的是:如何在比賽行的加號/n
之前刪除一行?這樣我就可以將單行上的數據傳輸到?grep``grep``awk
做整個事情會更優雅
awk
,但如果你想要一些快速和骯髒的東西,那麼你可以將awk
記錄分隔符設置為等於grep
組分隔符 - 然後按你想要的順序列印你想要的空格分隔欄位想:grep -C1 XYZ file | awk -vRS='\n--' '{print $1, $NF, $3, $2}' ABCD1 1234597890 12345 1234 DEFG2 0987654321 56789 5678