sed基礎用法整理
sed: Stream Editor 行編輯器
用法:
sed [Options] ‘AddressCommand’ file…
常用參數:
-n:靜默模式,不顯示未操作行,默認會將未操作的行顯示。
-i:直接修改源文件,默認情況下,sed的操作不會對源文件有任何影響,只會將結果顯示到顯示器。
-e script:script為sed相關操作,同時執行多個操作,每個-e后,跟一個操作
-f FILE:FIEL指的是某一文件的路徑(絕對,相對均可),將操作保存至文件中,一行一個操作,此方法可以同時執行多個操作。
-r:使用擴展的正則表達式。
Address:
1. startline , endline:需要操作的文件內容范圍,以行來界定,用$來表示最后一行
2. /RegExp/:正則表達式
3. /Pattern1/ , /Pattern2/:第一次被Pattern1匹配到的行開始至第一次被Pattern2匹配到的行之間的行
4. LineNumber:精確指定某一行
5. Startline,+#:#指的是某一非負整數,從指定行開始至其后的#行
Command:
1. d:刪除匹配到的行
2. p:打印顯示符合條件的行
3. a /string:在指定行后添加string行,如果需要加多行,可使用/n來換行
4. i /string:在指定行前添加string行,用法同3
5. r FILE:FIEL指的是某一文件的路徑(絕對,相對均可),將指定的文件內容添加至符合條件的行后
6. W FILE:FIEL指的是某一文件的路徑(絕對,相對均可),將指定范圍的內容保存至文件FILE中
7. s/Pattern/string/:查找匹配的子串,并替換string,默認只替換每行中第一次被匹配到的串
s/Pattern/string/g:全局替換,只要匹配到,就替換
s/Pattern/string/i:忽略大小寫
注:這里的“/”分割線并非固定,也可使用#,@等,但須保證三分割符相同
例子:
1. 使用sed顯示/etc/passwd中的第一行,最后一行,五至十行
命令:
顯示第一行: [root@localhost~]# sed -n '1p' /etc/passwd
顯示最后一行:[root@localhost~]# sed -n '$p' /etc/passwd
顯示五至十行: [root@localhost~]# sed -n '5,10p' /etc/passwd或
[root@localhost ~]# sed -n '5,+5p'/etc/passwd
結果如圖:
2. 刪除/boot/grub2/grub.cfg文件中的行首的空白
命令:
[root@localhost ~]# sed 's/^[[:space:]]*//' /boot/grub2/grub.cfg
結果:
3. 刪除/boot/grub2/grub.cfg文件中的行首的空白行
命令:
[root@localhost ~]# sed '/^$/d' /boot/grub2/grub.cfg
結果:
4. 刪除/etc/inittab行首的#號
命令:
[root@localhost ~]# sed 's/^#//g' /etc/inittab
結果:
5. 刪除/etc/inittab行首的#號,但要求其后必須包含空格
命令:
[root@localhost ~]# sed -r 's@^#[[:space:]]+@@g' /etc/inittab
結果:
6. 取出路徑/etc/ssh/中的etc子串
命令:
[root@localhost ~]# echo /etc/ssh/ | sed -r 's@/(.*)/[^/]+/@/1@g'
結果:
新聞熱點
疑難解答