簡體   English   中英

如何打印匹配第一次出現的單詞之間的所有行?

[英]How to Print All line between matching first occurrence of word?

輸入文件

ABC
CDE
EFG
XYZ
ABC
PQR
EFG

從上面的文件中,我想打印 'ABC' 和第一次出現的 'EFG' 之間的行。

預期輸出:

ABC
CDE
EFG
ABC
PQR
EFG 

如何打印從一個單詞到第二個單詞第一次出現的行?

編輯:如果您想打印所有出現在 ABC 到 DEF 之間的行並留下其他行,請嘗試以下操作。

awk '/ABC/{found=1} found;/EFG/{found=""}' Input_file


你能不能試試以下。

awk '/ABC/{flag=1} flag && !count;/EFG/{count++}' Input_file
$ awk '/ABC/,/EFG/' file

輸出:

ABC
CDE
EFG
ABC
PQR
EFG

這可能對你有用(GNU sed):

sed -n '/ABC/{:a;N;/EFG/!ba;p}' file

使用-n選項關閉隱式打印。

收集ABCEFG之間的線條,然后打印它們。 重復。

如果您只想在第一次出現ABCEFG之間打印,請使用:

sed -n '/ABC/{:a;N;/EFG/!ba;p;q}' file

要打印第二次到第四次出現,請使用:

sed -En '/ABC/{:a;N;/EFG/!ba;x;s/^/x/;/^x{2,4}$/{x;p;x};x;}' file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM