我有一個文本文件,我想提取「String1」之後,並在「String2」之前使用unix shell命令,如grep,awk,sed。 部分的文本文件,如下所示(我需要經過「特殊」來獲取和第二虛線前):shell命令提取後,字符串1和字符串2之前
------------------
Specific:
line1
line2
------------------
line3
我有一個文本文件,我想提取「String1」之後,並在「String2」之前使用unix shell命令,如grep,awk,sed。 部分的文本文件,如下所示(我需要經過「特殊」來獲取和第二虛線前):shell命令提取後,字符串1和字符串2之前
------------------
Specific:
line1
line2
------------------
line3
基於Extract lines between two patterns from a file:
$ awk '/------------------/ {p=0}; p; /Specific/ {p=1}' file
line1
line2
引用我自己的解釋:
- 當它找到
pattern1
時,則使變量p = 1。- 它只是在
p==1
時打印行。這是通過p
條件來完成的。如果是,則執行默認awk操作,即print $0
。否則,它不會。- 當它找到
pattern2
時,則使變量p = 0。由於在p
條件之後檢查此條件,它將打印第一次出現pattern2
的行。
所以不同的是,------------------
線在打印前檢查,以致於該標誌可以被停止。打印後檢查Specific
行,以便打開標誌而不打印此特定行。
它也設置p=1
後使用next
可以這樣做awk
跳轉到下一行:
awk '/------------------/ {p=0} /Specific/ {p=1; next} p' file
這是偉大的,只是一個簡單的問題:我如何可以提取之後和之前。呈現的代碼需要以模式開始的行 – Ramin
爲了更清楚地說明,您的預期輸出是什麼? – fedorqui
line1和line2只有 – Ramin