shell利用sed獲取檔案指定位置內容

2021-10-07 06:24:26 字數 1784 閱讀 9787

假設檔案是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 ...