shell指令碼 sed的用法

2021-10-19 07:25:05 字數 844 閱讀 1631

sed在處理文字時是逐行讀取檔案內容,讀到匹配的行就根據指令做操作,不匹配就跳過。

sed是linux下一款功能強大的非互動流式文字編輯器,可以對文字檔案進行增、刪、改、查等操作,支援按行、按欄位、按正則匹配文字內容,靈活方便,特別適合於大檔案的編輯。詳細用法參考:shell指令碼--sed的用法

sed '55d' test   # 將test檔案的第55行刪除後的檔案內容列印在控制台上,檔案本身沒有被修改

sed -i '55d' test # 將test檔案的第55行刪除,檔案本身被修改了

使用 -i 引數可能會遇到乙個 "sed: 1: "***": invalid command code ."的問題,參考解釋和解決方案:

i 本來的意思就原地替換的意思, 為啥不能替換呢? 一般情況 原地替換是比較危險的行為, 為了規避這樣的行為, 需要你提供乙個 備份的副檔名, 才能進行替換. 如果你給了空的擴充套件,就不會備份原始檔. 但這不是推薦的方式. 因為 你面臨這損壞或者部分損壞的危險 有可能恰巧是當磁碟空間用完的時候.

來加上副檔名 來試驗一下

sed  -i ".bak"  '5d' test

此時 就會發現 乙個備份檔案

├── test

├── test.bak

如果不想備份的話, 可以不提供擴充套件名稱. 加上乙個空串即可.

sed  -i ""  '5d' test

參考文件:shell指令碼--sed的用法、用sed 報了一下錯誤 invalid command code

shell指令碼學習sed

i 替換並儲存 s pattern replace string 只替換第一處 s pattern replace string g 替換所有 s pattern replace string ng 從第n處開始匹配 ex 直接替換文字 clz localhost shell learn sed i...

Shell指令碼補充 sed

var 10 a haha echo var 10 echo 10 echo ab 為空 echo b 輸出hahab a abcdcba echo 輸出abcdcba 完全匹配失敗 echo 輸出dcba abc被刪除了 即到第乙個被匹配的c echo a 輸出abcdcba 不會對源資料做修改a...

Shell指令碼sed命令

1 p命令 命令p用於顯示模式空間的內容。預設情況下,sed把輸入行列印在螢幕上,選項 n用於取消預設的列印操作。當選項 n和命令p同時出現時,sed可列印選定的內容。例子 plain view plain copy 1 sed my p datafile 預設情況下,sed把所有輸入行都列印在標準...