sed命令 学习笔记
sed 基本用法
sed : Stream EDitor 行編輯器 ? ? ?(全屏編輯器: vim)
sed: 默認打印模式空間 ?默認不編輯原文件,僅對模式空間中的數據做處理; 而后,處理結束后,將模式空間打印至屏幕
sed [optiones]?'ADDressCommand' file ...
? ? ? -n : 靜默模式 不在默認顯示模式空間中的內容
? ? ?? -i : 直接修改原文件
? ? ? ?-e SECRIPT -e SECRIPT : 可以同時執行多個腳本
? ? ? ?-f /PATH/TO/SED_SCRIPT : 添加 "腳本文件" 到程序的運行列表
? ? ? ? ? ? ? sed -f /path/to/scripts file
? ? ? ?-r : 使用擴展正則表達式 ? ( 默認支持基本正則表達式 )
ADDress ?地址表示
1 . StratLine , EndLine ? 比如 : 1 , 100
? $ 最后一行
? $-1 倒數第二行
2 . /RegExp/ ? 比如 : /^root/
3 . /pattern1/ , /pattern2/ ? ? ?比如 : 第一次被 pattern1 匹配到的行開始, 至第一次被 pattern2 匹配到的行結束,這中間的所有行
4 . LineNumber ? 指定的行
5 . StartLine, +N ? ? ?從 StartLine 開始, 向后的 N 行
Command:
d : 刪除符合條件的行
[root@nono?~]#?sed?'5,$d'?/etc/fstab???????#刪除?/etc/fstab?文件中的第五行到最后一行 [root@nono?~]#?sed?'/oot/d'?/etc/fstab????#刪除?/etc/fstab?文件中所有包含?oot?的行 [root@nono?~]#?sed?'1,+2d'?/etc/fstab?????#刪除?/etc/fstab?文件中,第一行開始并向后兩行的內容(3行) [root@nono?~]#?sed?'1d'?/etc/fstab??????????#只刪除第一行 [root@nono?~]#?sed?'/^\//d'?/etc/fstab?????#刪除以?/?開頭的行,?^\/?'\'為轉譯(使用字符本身的意義)p : 顯示符合條件的行
[root@nono?~]#?sed?-n?'/^\//p'?/etc/fstab??#只顯示以?'\'?開頭的行??-n:不顯示模式空間中的內容a \string : 在指定的行后面追加新行,內容為 "string"?
[root@nono?~]#?sed?'/^\//a?\#hello?word'?/etc/fstab????#在?/?開頭的行下面,追加?/#hello?word [root@nono?~]#?sed?'/^\//a?\#hello?word\n\#hello?linux'?/etc/fstab?#追加兩行?\n?:?換行符i \string : 在指定的行前面追加新行,內容為 "string" ?用法與 a \string 相同
r FILE : 將指定的文件的內容添加至符合條件的行處
[root@nono?~]#?sed?'2r?/etc/issue'?/etc/fstab???#在?/etc/fstab?的第二行后面,添加文件?/etc/issue?的內容 [root@nono?~]#?sed?'1,2r?/etc/issue'?/etc/fstab??#在?/etc/fstab?的第一行,第二行后面分別添加?/etc/issue?的內容w FILE : 將地址指定的范圍內的行另存至指定的文件中
s /pattern/string/修飾符?: 表示查找并替換 ?(默認只替換每行中第一次被模式匹配到的字符串)
? ? ? ? ?pattern : 可以使用正則表達式的元字符
? ? ? ? ?修飾符
? ? ? ? ?g : 全局替換
? ? ? ? ? i : 查找時忽略字符大小寫
? ? ? ? ? s/// : s### : s@@@ ?作用相同?
[root@nono?~]#?sed?'s@/@#@g'?/etc/fstab?????#將?/etc/fstab?文件中的?/?替換為?#?(g?全局替換) [root@nono?~]#?history?|?sed?'s#^[[:space:]]*##'???#將?history?行首的空格刪除?(可以刪除多個空白字符)練習?
刪除 /etc/grub.conf 文件中行首的空白符
sed -r 's@^[[:spapce:]]+@@g' /etc/grub.conf
刪除 /etc/inittab 文件中的空白行
sed '/^$/d' /etc/inittab
刪除 /etc/inittab 文件中開頭的 # 號
sed 's@^#@@g' /etc/inittab
刪除某文件中開頭的#號及后面的空白字符,但要求#號后面必須有空白字符
sed -r 's@^#[[:space:]]+@@g' /etc/inittab
刪除某文件中以空白字符后面跟 # 類的行中的開頭的空白字符及#
sed -r 's@^[[:space:]]+#@@g' /etc/inittab
取出一個文件路徑的目錄名稱
echo "/etc/rc.d/" | sed 's@^(/.*/)[^/]+/?@\1@g'
轉載于:https://blog.51cto.com/aby028/1825600
總結
以上是生活随笔為你收集整理的sed命令 学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis sentinel 主从切换(
- 下一篇: MathType可以编辑省略号吗