假設檔案是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
得到了我們需要的內容
shell指令碼利用sed命令分割檔案
前幾天有個需求,網路模組5秒定時傳回領區資訊並寫入檔案,需求為5分鐘後讀取檔案,提取每次傳回的領區資訊中的earfcn和rsrp等,每次傳回的資訊以 為分隔符 檔案格式如下 領區資訊.領區資訊.領區資訊.領區資訊.領區資訊.提取資訊前要先把每5秒傳回的資訊分割,然後再提取,所以就寫了一下的指令碼來提...
shell 檔案內容替換 sed用法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!呼叫sed命令有兩種形式 sed options command file s sed options f scriptfile file s 刪除 d命令 sed 2d example 刪除example檔案的第二行。sed 2,d exampl...
Shell 檔案內容替換 sed用法
sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法。呼叫sed命令有兩種形式 sed options command file s sed options f scriptfile file s ...