簡體   English   中英

awk命令如果匹配則打印最后5行

[英]awk command to print last 5 rows if matched

我有一個xml文件。 我需要在匹配的文本之前打印五行。

可能有多個匹配項。 我正在使用以下awk命令,該命令僅返回一行。

awk '/<\/ABC>/' file.xml

回報

<ABC>Some Text1</ABC>
<ABC>Some Text2</ABC>
<ABC>Some Text3</ABC>

預期:

... previous 4 lines ...
<ABC>Some Text1</ABC>
... previous 4 lines ...
<ABC>Some Text2</ABC>
... previous 4 lines ...
<ABC>Some Text3</ABC>

無法按照Solaris中的方式使用grep -B

grep:非法選項-B grep:非法選項-2用法:grep -hblcnsviw模式文件

對於Solaris:

nawk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=2 a=4 s="string" file1

“ b”->在字符串“ s”之前要打印的行數。

“ a”->在字符串“ s”之后要打印的行數。

Linux的:

grep -B4 '<ABC>' file.xml

這個怎么樣?

awk '(NR>1){{a[NR]=$0;if($0~/<\/ABC>/){for(i=NR-4;i<=NR;i++){print a[i]}}}}' input.txt

暫無
暫無

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

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