中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell中sed命令如何使用

發布時間:2021-11-11 15:44:26 來源:億速云 閱讀:246 作者:小新 欄目:網絡安全

這篇文章給大家分享的是有關shell中sed命令如何使用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

sed工具:sed是文本流編輯器,逐行對文件的內容進行處理

用法:sed [option] ... 'script' inputfile...

選項:

  -n:靜默模式,不輸出模式空間的內容至屏幕

  -e:實現多點的功能編輯

  -f /path/from/script_file:從指定的文件讀取編輯腳本

  -r:支持使用擴展的正則表達式

地址界面方法:

  (1)不給地址:對全文進行處理

  (2)一個地址(單地址)

    #:指定的行

    /pattern/:被引用處模式所能夠匹配到的每一行:

  (3)地址范圍   

    #,#:從第幾行到第幾行

    #,+#:顯示從第幾行開始向后的N行

    /pat1/,/pat2/:同時匹配2個參數,表示匹配這2個參數之間的所有行

    #,/pat1/:表示匹配這2個參數之間的所有行

  (4)~:步進

         #sed -n ‘1~2p’ test.txt(第一行開始,每次增加2行,意思就是顯示奇數行)

   shell中sed命令如何使用

   #sed -n ‘2~2p’ test.txt(從第二行開始顯示,每次增加2行,意思就是顯示偶數行)

   shell中sed命令如何使用

編輯命令:

  d:刪除被地址界定選定的內容

  p:顯示(打印)模式空間中的內容到屏幕上,只打印符合條件的行,常于-n結合一起使用

  a \text:在行后面一行追加文本:支持使用\n實現多行追加;

    例: #sed '/^T/a \abc' a.txt

  i \text:在行前面一行追加文本:支持使用\n實現多行追加;

    例:# sed '/^T/i \abc' a.txt

  c \text:替換匹配到的行:

    例:# sed '/^T/c \abc' a.txt

  w /path/to/somefile:保存模式空間中匹配到的內容至指定文件中;

  r /path/from/somefile:讀取指定文件的文本游戲 至模式空間中匹配到的行后;

  =:為模式空間中的行,打印行號;

    例:#sed -n '/^T/=' a.txt

  q:一旦匹配到內容,則退出;不再往下匹配

  !:取反條件;對除了模式匹配到的行以外的行,進行操作;

  s///:支持使用其它分隔符,s@@@,s###

替換標記:

  g:行內全局進行替換:例:sed -n ‘s@r..t@&er@p’ /etc/passwd  不帶g選項,只替換每一行的第一次

  #:行內替換,替換第幾次出現的匹配的內容,例:sed -n 's/Unix/UNIX/2p' a.txt,把第2次出現的Unix替換

  p:如果替換成功,則顯示替換成功的行,與-n一起使用

  w /path/to/somefile:將替換成功的行保存至指定文件中

練習1:刪除/boot/grub/grub.conf文件中所有以空白開頭的行行首的空白字符

  #sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf                 

練習2:刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符

  #sed 's@^#[[:space:]]\+@@' /etc/fstab 

練習3:echo一個絕對路徑給sed命令,取出其基名:        

  #echo "/etc/sysconfig" | sed 's@[^/]\+$@@'

練習4:批量修改文件名字

  #ls *.jpg | sed 's#\(.*\)_finished\(.*\).*#mv & \1\2#g' | bash

高級編輯命令:

  h:把模式空間中的內容覆蓋至保持空間中;

  H:把模式空間的內容追加至保持空間中;

  g:從保持空間取出數據覆蓋至模式空間;

  G:從保持空間取出數據追加至模式空間;

  x:把模式空間中內容與保持空間中的內容進行互換操作;

  n:讀取匹配到的行的下一行覆蓋至模式空間;

  N:讀取匹配到的行的下一行追加至模式空間;

  d:刪除模式空間中的所有行;

  D:刪除多行模式空間中的第一行;

  示例用法:

  #sed -n ‘n;p’ test.txt(輸出偶數行)

  #sed ‘n;d’ test.txt(只顯示奇數行)

       #sed ‘$!d’ test.txt(最出文件最后一行)

  #sed ‘G’ test.txt(在每一行下面加一個空白行)

  #sed ‘/^$/d;G’ test.txt(每行間只保留一個空白行)

  #sed '1!G;h;$!d' test.txt(逆行顯示文件內容)

  #sed ‘$!N;$!D’ test.txt(讀文件的后2行)

  #sed -n ‘1!G;h;$p’ test.txt(逆行顯示文件內容)

保持空間使用的一個例子:

  需求:把單詞the和statement之間的單詞的全部改為大寫

  原文:

   find the Match statement

   consult the Get statement 

   using the Read statement to retrieve data

  sed寫法:

       /the .*statement/{

        h

        s/.*the \(.*\)statement.*/\1/

        y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

        G

        s/\(.*\)\n\(.*the \).*\( statement.*\)/\2\1\3/

        }

  結果:     

    find the MATCH  statement

  Consult the GET  statement

  using the READ  statement to retrieve data

  解析:

   /the .*statement/:匹配這種模式的行,然后進行修改

   h:將匹配到的內容覆蓋至保持空間,保留一份復本

   s/.*the \(.*\)statement.*/\1/:在模式空間中將匹配到行轉換為要改變的單詞

   y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/:將修改后的單詞轉換為大寫

   G:把保持空間的復本追加到模式空間

   s/\(.*\)\n\(.*the \).*\( statement.*\)/\2\1\3/:將修改為大寫的單詞替換到原語句中的單詞

感謝各位的閱讀!關于“shell中sed命令如何使用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锦屏县| 平乡县| 错那县| 将乐县| 肃南| 曲沃县| 南昌市| 通河县| 华亭县| 长兴县| 长宁县| 大洼县| 四会市| 囊谦县| 焉耆| 西宁市| 黎城县| 毕节市| 丰原市| 武强县| 天长市| 德州市| 田林县| 堆龙德庆县| 萨嘎县| 通城县| 神农架林区| 郓城县| 丰城市| 鹿泉市| 玛沁县| 巩义市| 吐鲁番市| 乌什县| 霍山县| 卓资县| 阿合奇县| 云安县| 池州市| 彭山县| 康保县|