sed高級命令

  sed基礎命令在工作中會經常用到,大家都很熟悉了。sed有一些非常實用的高級命令,用的比較少,就比較容易忘記,所以記錄一下,以後忘記了可以來查看。
  sed命令:行定位
  http://blog.51cto.com/kexiaoke/2067371

n 跳過當前行,讀取下一行

nl passwd |sed -n '{n;p}'

{} 花括號

可以在花括號裏面執行多個命令用;分隔。列如
nl passwd |sed -n '{n;p}' #打印偶數行

& 替換固定字符串

列如要把字符串xiaoke替換成xiaoketest,可以使用
sed 's/xiaoke/xiaoketest/' test.txt 或者
sed 's/xiaoke/&test/' test.txt
sed高級命令

元字符\u \l \U \L :轉換爲大寫/小寫字符

\u 將首字符轉成大寫
\U 將所有字符轉成大寫
元字符

使用()獲取正則匹配的內容,使用\1 獲取第一個括號的內容,使用\2獲取第二個括號裏面的內容

例如:獲取passwd文件的用戶名
使用()獲取到用戶名字段

sed 's/\(^[a-z-]\+\):.*/\1/' passwd

使用( )替換部分字符

列子1: 把w1w2w3替換w1

echo "w1w2w3"|sed 's/w1\(w2\)w3/\1/'
注意:()和\(\ )的區別爲()用於正則裏面,\(\ )用戶字符

例子2: 把w1w2w3替換爲w1w3w2

echo "w1w2w3"|sed 's/\(w1\)\(w2\)\(w3\)/\1\3\2/'

列子3: 從passwd文件文件獲取用戶名、uid、gid

sed 's#\(^[a-z-]\+\):x:\([0-9]\+\):\([0-9]\+\):.*#\1----\2----\3#' passwd

例子4: 使用sed獲取ip地址

方法1:
/sbin/ifconfig |sed -n '/inet.*:172/p'|sed -e 's/inet.*r://' -e 's/Bcast.*$//'|tr -d ' '
方法2:
ifconfig eth0|sed -n '/inet /p'|sed 's/inet \([0-9.]\+\) .*/\1/'|tr -d ' '

注意,在markdown編輯器裏面正則部分需要再次轉義\符號,不然展示的時候轉義符號\會丟失

sed高級命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章