假設檔案是test.txt,檔案內容如下:
---------------------------------------------------------------------------------
1 Start 2020-01-01 12:20:20
2 Start Job Jobname
3 ssdffff
4 ssddkddd
5 Start 2020-01-01 12:20:50
6 Finish Job Jobname
7 Start 2020-01-01 12:30:10
8 Start Job Jobname
9 ffhkffjkff
10 sshdkhdkdhkd
11 Start 2020-01-01 12:30:30
12 Finish Job Jobname
----------------------------------------------------------------------------
我們需要把加粗部分列印出來
使用如下shell命令可以實作:
cat test.txt|tac|sed -n '1,/Finish Job/p'|sed '$d'|tac
注:cat的作用是將檔案內容輸出到螢屏
tac的作用是將內容反轉,即將內容倒過來顯示。
[root@udata tmp]# cat test.txt|tac
12 Finish Job Jobname
11 Start 2020-01-01 12:30:30
10 sshdkhdkdhkd
9 ffhkffjkff
8 Start Job Jobname
7 Start 2020-01-01 12:30:10
6 Finish Job Jobname
5 tart 2020-01-01 12:20:50
4 ssddkddd
3 ssdffff
2 Start Job Jobname
1 Start 2020-01-01 12:20:20
sed -n '1, /Finish Job/p' 的作用是將第 1行和第一次遇到Finish Job的行顯示出來
[root@udata tmp]# cat test.txt|tac|sed -n '1,/Finish Job/p'
12 Finish Job Jobname
11 Start 2020-01-01 12:30:30
10 sshdkhdkdhkd
9 ffhkffjkff
8 Start Job Jobname
7 Start 2020-01-01 12:30:10
6 Finish Job Jobname
sed '$d'的作用是去掉最后一行
[root@udata tmp]# cat test.txt|tac|sed -n '1,/Finish Job/p'|sed '$d'
12 Finish Job Jobname
11 Start 2020-01-01 12:30:30
10 sshdkhdkdhkd
9 ffhkffjkff
8 Start Job Jobname
7 Start 2020-01-01 12:30:10
然后再使用tac反轉內容
[root@udata tmp]# cat test.txt|tac|sed -n '1,/Finish Job/p'|sed '$d'|tac
7 Start 2020-01-01 12:30:10
8 Start Job Jobname
9 ffhkffjkff
10 sshdkhdkdhkd
11 Start 2020-01-01 12:30:30
12 Finish Job Jobname
得到了我們需要的內容
uj5u.com熱心網友回復:
如何識別出加粗部分的
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/22687.html
標籤:專題技術討論區
