流編輯器 sed正則表達式
模式空間,默認不編輯原文件,僅對模式空間中的數據作處理;處理結束後,將模式空間中數據打印至屏幕。sed是一個行編輯器。bash
sed [options] 'Address Command' file ...
編輯器
Option:
ide
-n: 靜默模式, 再也不默認顯示模式空間中的內容 -i: 直接修改原文件 -e SCRIPT 能夠同時執行多個腳本, 操做 -f /PATH/TO/SED_SCRIPT 如: sed -f /path/to/scripts file ( 指定 sed 的腳本文件) -r: 表示使用擴展正則表達式 |
Address 地址定界:
spa
1、 StartLine,EndLine 好比 1,10 $:最後一行 2、 /RegExp/ 如/^root/, root 開頭的全部行,模式匹配 3、 /pattern1/,/pattern2/ 第一次被 pattern1 匹配到的行開始,至第一次被pattern2匹配到的行結束,這中間的全部行 4、 LineNumber指定的行 5、 StartLine, +N 從 startLine 開始,向後的N行。 |
Command:orm
1、d: 刪除符合條件的行; ip 2、p: 顯示符合條件的行; 3、a \」string」: 在指定的行後面追加新行, 內容爲 string; string 4、\n: 能夠用於換行 6、r FILE: 將指定的文件的內容添加至符合條件的行處 7、w FILE: 將地址指定的範圍內的行另存至指定的文件中; 8、= 顯示符合條件行的行號 8、s/pattern/string[&]/修飾符: 查找並替換, 默認只替換每行中第一次被模式匹配到的字符串。 &: 引用模式匹配整個串 修飾符 g: 全局替換 i: 忽略字符大小寫 |
sed練習
sed練習: 1. 刪除/etc/grub.conf文件中行首的空白符; sed s@^[[:space:]]*@@' /etc/grub.conf sed -r 's@^[[:space:]]+@@g' /etc/grub.conf 2. 替換/etc/inittab文件中"id:3:initdefault:"一行中的數字爲5; sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab
3. 刪除/etc/bashrc文件中的空白行; sed '/^$/d' /etc/bashrc 4. 刪除/etc/inittab文件中開頭的#號; sed 's@^#@@g' /etc/inittab 5. 刪除某文件中開頭的#號及後面的空白字符,但要求#號後面必須有空白字符; sed -r 's@^#[[:space:]]+@@g' /1.txt (將下面說明中的例子,建立成/目錄下名字爲1的txt文件) 6. 刪除某文件中以空白字符後面跟#類的行中的開頭的空白字符及#; sed -r 's@^[[:space:]]+#@@g' /1.txt (將下面說明中的例子,建立成/目錄下名字爲1的txt文件) 7. 取出一個文件路徑的目錄名稱; echo "/home/zrs/" | sed -r 's@^(/.*/)[^/]+/?@\1@g' (以/home下的/zrs目錄爲例) 8. 取出一個文件路徑的基名。 echo "/home/zrs/" | sed -r 's@^/.*/([^/]+)/?@\1@g' (以/home下的/zrs目錄爲例) |