1. 程式人生 > >Linux三劍客——sed命令簡述

Linux三劍客——sed命令簡述

替換 alex 批量 圖片 ado nag 顯示 amp 第一個

Linux三劍客——sed
13.1 sed介紹

  1. sed——流編輯器(stream editor)
  2. sed功能與版本:處理文本文件,日誌,配置文件
    增加、刪除、修改、查詢
    sed --version
  3. 語法格式:sed [選項] [sed指令] [輸入文件]
    sed -i.bak ‘s#boy#girl#g‘ oldboy.txt
    -i sed命令的參數
    s sed命令
    g 小尾巴/修飾
  4. sed命令執行過程
    13.2 sed命令功能示例
  5. 等號’=‘顯示行號
    sed = person.txt
  6. 單行-輸入行號即可
    sed -n ‘3p‘ person.txt

    103,Alex,COO

  7. 顯示多行
    sed -n ‘3,6p‘ person.txt
  8. 包含oldboy的行
    sed -n ‘/oldboy/p‘ person.txt

    101,oldboy,CEO

  9. 顯示包含oldboy到顯示yy的行
    sed -n ‘/oldboy/,/yy/p‘ person.txt

    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO

  10. 顯示包含oldboy或yy的行
    sed -nr ‘/oldboy|yy/p‘ person.txt
  11. 顯示不連續的行
    sed -nr ‘1p;3p;4p‘ person.txt
  12. 文件的最後一行增加兩行
    sed ‘$a106,wuxingge,UFO\n107,lee,XO‘ person.txt

    #a==append 追加

    #i==insert 插入

    echo -e ‘106,wuxingge,UFO\n107,lee,XO‘>>person.txt
    cat >>person.txt <<EOF

    106,wuxingge,UFO
    107,lee,XO
    EOF

  13. 不顯示空行方法 !表示取反

    sed ‘/^$/d‘ person.txt

    sed -n ‘/^$/!p‘ person.txt

    awk ‘!/^$/‘ person.txt

    grep -v ‘^$‘ person.txt

  14. ‘s###’表示逐行替換符合條件的第一個對象

    sed ‘s#1#dou#‘ person.txt

    dou01,oldboy,CEO

    -i 表示確定修改
    -i.bak 表示先備份再修改
    sed中雙引號內變量可以執行

  15. sed命令中&符號表示前面正則匹配到的內容

    echo ‘123456‘|sed ‘s#.*#<&>#g‘

    <123456>

    echo ‘123456‘|sed -r ‘s#([0-9])#<\1>#g‘

    <1><2><3><4><5><6>

    echo ‘123456‘|sed ‘s#.#<&>#g‘

    <1><2><3><4><5><6>
    13.3 批量修改文件名
    方法1-使用sed替換

    ls .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘

    mv oldboy01.jpg oldboy01.avi
    mv oldboy02.jpg oldboy02.avi

    ls .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘|bash

    方法2-使用rename方法批量修改文件名

    rename jpg avi old*.jpg

    rename from to file
    替換的內容 替換成什麽 替換哪些文件
    13.4 使用sed命令常見的坑

  16. -r與-i同時使用:
    -r參數在前面:-ri 正常結果
    -i參數在前面:-ir 表示先把文件備份xxr,然後再替換文件中的內容
  17. -r與-n同時使用:會把源文件的內容清空,只顯示符合條件內容
    技術分享圖片

Linux三劍客——sed命令簡述