我有一個看起來像這樣的文件:AWK:顯示匹配正則表達式(多)
SF:/home/developer/project/test/resources/somefile.js
DA:1,2
DA:3,2
end_of_record
SF:/home/developer/project/src/resources/otherfile.js
DA:9,2
DA:15,2
DA:22,2
end_of_record
...some more SF:/home/xxx and end_of_record lines...
該文件包含有SF: ...
開始,以end_of_record
結束塊。請注意,中間的線數(DA:x,x
)可能不同。我想打印所有在第一行中具有「測試」字符串的塊(如「SF:/ home/developer/test/resources/...」)。在這個例子中,我想要的輸出將是:
SF:/home/developer/project/test/resources/somefile.js
DA:1,2
DA:3,2
end_of_record
我想這樣做對的Linux環境。
我的第一個嘗試是使用「sed」命令來做到這一點,但經過一些研究後,似乎「awk」更適合做多線操作。
使用AWK和正則表達式,這是我迄今爲止的命令:
awk '/SF[:\/a-zA-Z0-9]*test[\/A-Za-z0-9.,:\n]*end_of_record/ {print}' FS="\n" RS="" examplefile
但它輸出完整的examplefile
,不僅包含「測試」中的第一行的塊。我不確定我的正則表達式是否錯誤,或者我是否在我的awk
調用中丟失了某些東西。
我怎樣才能得到第一行中的「測試」塊?