shell中sed的使用及選項, 編輯器中的 作用

2022-05-15 16:50:49 字數 1825 閱讀 4524

1. sed會逐行從檔案中讀取資料, 再對資料處理後顯示到螢幕, 再進行下一行的處理.

sed  '4d'  file.txt             # 刪除檔案中第4行

sed  '2,6d'  file.txt          # 刪除檔案中的2-6行

sed  '5,$d'  file.txt          # 從第5行刪除到最後一行

sed  '/root/d'  file.txt       # 刪除含root字元的行

sed  '/root/,5d' file.txt     # 前5行中有root則從root行刪到第5行, 注意第5行會保留

sed  '/root/,+3d'  file.txt  # 刪掉有root行, 並向後刪3行.

sed  '/root/!d'  file.txt      # 取反刪除, 留下root行

sed  '1~2d'  file.txt         # 刪除奇數行, 從1開始, 每隔2行刪除

sed  '0~2d'  file.txt    # 刪除偶數行, 從0開始, 每隔2行刪除

2. sed中的正則使用:

sed同grep命令一樣, 預設不支援擴充套件元字元, 解決辦法:

1. 將擴充套件元字元加對應斜線變為基本元字元.

2. sed -r 加入-r引數, 使其支援擴充套件元字元.

3. sed的查詢替換使用:

替換的使用:

1. sed  -r  's/xx/xx/'               # 替換xx為xx, 只替換每行的第乙個

2. sed  -r  's/xx/xx/g'              # 替換整行中的所有xx為xx

3. sed  -r  's/xx/xx/gi'             # 忽略行中內容的大小寫進行匹配替換

查詢的使用:

1. sed  -r  '/xx/d'                      # 查詢時不要使用s, 查詢xx並刪除

4. sed的命令選項 (注意是命令, 在引號中使用的, 注意要和-後的引數區分):

5. sed的功能選項( 即-後的引數值, ):

6. &符合的作用, 就是代表, 代指, 代替的作用

如在vim中需要給3-5行內容注釋掉的寫法如下:

:3,5 s/\(.*\)/#\1/  # 解釋, vi中模式識別基本正則元字元, 括號中.*代表整行, 括號兩邊使用\給轉義了, 這正是shell中正則基本元字元的形式

:3,5 s/.*/#&/    # 作用同上, &符合就代替了前面.*, 即整行內容

:% s/.*/#&/    # %表示作用到每一行, &符合就代替了前面.*, 即整行內容

注意&號代表的是前面正則匹配到的內容, 如果匹配到的是行中的乙個字元, 則就是在這個字元前加#, 注意區分正則匹配到的到底是什麼

:3,5 s/^/#/    # 3-5行加注釋, 解讀: 把3-5行的開始符號替換為#號.

以上在vi中的寫法, 在sed命令中用法一模一樣, 如下:

sed  '3,5s/\(.*\)/#\1/'  file.txt        # 如果使用-r引數, 則括號兩邊的轉義可去掉, 因為-r引數識別的就是擴充套件元字元

sed  '/root/s///' file.txt    # sed也有這種用法, s前面的內容可理解為替換的作用範圍, 3,5或者/root/都是, 規定作用行數,或包含root的行

shell程式設計 sed的選項

sed 引數 partern commond file 標準輸出 sed sed 引數 partern commond n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則只有經過sed 特殊處理的那一行 或者動作...

shell指令碼中sed的使用

sed語法格式 語法格式 sed 選項 編輯指令 檔名 選項 n 遮蔽預設輸出 i 直接修改檔案內容 r 啟用擴充套件正則 條件 1.行號 指令 p 輸出 print 例子 列印第一到四行 sed n 1,4p passwd 列印第三行,第五行 sed n 3p 5p passwd 列印第三行之後的...

Shell中read的選項及用法

1.read的一些選項 read可以帶有 a,d,e,n,p,r,t,和 s八個選項。a 將內容讀入到數值中 echo n input muliple values into an array read a array echo get values in array d 表示delimiter,即...