亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

sed的使用

發布時間:2020-07-30 16:26:50 來源:網絡 閱讀:394 作者:lyanhong 欄目:編程語言

sed命令行格式為:

         sed [-nefri]  command  輸入文本/文件       

 

常用選項:

        -n∶取消默認的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到屏幕上。但如果加上 -n 參數后,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來

        -e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編輯

        -f∶指定sed腳本的文件名. 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作

        -rsed 的動作支援的是延伸型正則表達式的語法。(預設是基礎正則表達式語法)

        -i∶直接修改讀取的文件內容,而不是由屏幕輸出     

 

常用命令:

        a 新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)

        c 取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行

        d 刪除,因為是刪除,所以 d 后面通常不接任何內容

         i 插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行)

         p列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起用

         s取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表達式。例如 1,20s/old/new/g

 

定址

 

定址用于決定對哪些行進行編輯。地址的形式可以是數字、正則表達式、或二者的結合。如果沒有指定地址,sed將處理輸入文件的所有行。

地址是一個數字,則表示行號;是“$"符號,則表示最后一行。例如:

sed -n '3p' datafile

只打印第三行

  只顯示指定行范圍的文件內容,例如:

 

# 只查看文件的第100行到第200

sed -n '100,200p' mysql_slow_query.log

  地址是逗號分隔的,那么需要處理的地址是這兩行之間的范圍(包括這兩行在內)。范圍可以用數字、正則表達式、或二者的組合表示。例如:

 

sed '2,5d' datafile

#刪除第二到第五行

sed '/My/,/You/d' datafile

#刪除包含"My"的行到包含"You"的行之間的行

sed '/My/,10d' datafile

#刪除包含"My"的行到第十行的內容

 

 

舉例:(假設我們有一文件名為ab

     刪除某行

     [root@localhost ruby] # sed '1d' ab              #刪除第一行

     [root@localhost ruby] # sed '$d' ab              #刪除最后一行

     [root@localhost ruby] # sed '1,2d' ab           #刪除第一行到第二行

     [root@localhost ruby] # sed '2,$d' ab           #刪除第二行到最后一行

 

  顯示某行

.    [root@localhost ruby] # sed -n '1p' ab           #顯示第一行

     [root@localhost ruby] # sed -n '$p' ab           #顯示最后一行

     [root@localhost ruby] # sed -n '1,2p' ab        #顯示第一行到第二行

     [root@localhost ruby] # sed -n '2,$p' ab        #顯示第二行到最后一行

 

  使用模式進行查詢

     [root@localhost ruby] # sed -n '/ruby/p' ab    #查詢包括關鍵字ruby所在所有行

     [root@localhost ruby] # sed -n '/\$/p' ab        #查詢包括關鍵字$所在所有行,使用反斜線\屏蔽特殊含義

 

  增加一行或多行字符串

     [root@localhost ruby]# cat ab

     Hello!

     ruby is me,welcome to my blog.

     end

     [root@localhost ruby] # sed '1a drink tea' ab  #第一行后增加字符串"drink tea"

     Hello!

     drink tea

     ruby is me,welcome to my blog.

     end

     [root@localhost ruby] # sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"

     Hello!

     drink tea

     ruby is me,welcome to my blog.

     drink tea

     end

     drink tea

     [root@localhost ruby] # sed '1a drink tea\nor coffee' ab   #第一行后增加多行,使用換行符\n

     Hello!

     drink tea

     or coffee

     ruby is me,welcome to my blog.

     end

 

  代替一行或多行

     [root@localhost ruby] # sed '1c Hi' ab                #第一行代替為Hi

     Hi

     ruby is me,welcome to my blog.

     end

     [root@localhost ruby] # sed '1,2c Hi' ab             #第一行到第二行代替為Hi

     Hi

     end

 

  替換一行中的某部分

  格式:sed 's/要替換的字符串/新的字符串/g'   (要替換的字符串可以用正則表達式)

     [root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby/bird/g'    #替換rubybird

   [root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby//g'        #刪除ruby

 

     插入

     [root@localhost ruby] # sed -i '$a bye' ab         #在文件ab中最后一行直接輸入"bye"

     [root@localhost ruby]# cat ab

     Hello!

     ruby is me,welcome to my blog.

     end

     bye

 

 

 

 替換:

 

-e是編輯命令,用于sed執行多個編輯任務的情況下。在下一行開始編輯前,所有的編輯動作將應用到模式緩沖區中的行上。

 

sed -e '1,10d' -e 's/My/Your/g' datafile

#選項-e用于進行多重編輯。第一重編輯刪除第1-3行。第二重編輯將出現的所有My替換為Your。因為是逐行進行這兩項編輯(即這兩個命令都在模式空間的當前行上執行),所以編輯命令的順序會影響結果。

 

# 替換兩個或多個空格為一個空格

 

sed 's/[ ][ ]*/ /g' file_name

 

 

# 替換兩個或多個空格為分隔符:

 

sed 's/[ ][ ]*/:/g' file_name

   

 

# 如果空格與tab共存時用下面的命令進行替換

 

# 替換成空格

 

sed 's/[[:space:]][[:space:]]*/ /g' filename

 

# 替換成分隔符:

 

sed 's/[[:space:]][[:space:]]*/:/g' filename

 

 ==============

 

sed命令的調用:

    在命令行鍵入命令;sed命令插入腳本文件,然后調用sed;sed命令插入腳本文件,并使sed腳本可執行

    sed [option] sed命令 輸入文件            在命令行使用sed命令,實際命令要加單引號

    sed [option] -f sed腳本文件 輸入文件     使用sed腳本文件

    sed腳本文件 [option] 輸入文件            第一行具有sed命令解釋器的sed腳本文件

    option如下:

      n 不打印; sed不寫編輯行到標準輸出,缺省為打印所有行(編輯和未編輯),p命令可以用來打印編輯行

      c 下一命令是編輯命令,使用多項編輯時加入此選項

      f 如果正在調用sed腳本文件,使用此選項,此選項通知sed一個腳本文件支持所用的sed命令,

          sed -f myscript.sed input_file  這里myscript.sed即為支持sed命令的文件

    使用重定向文件即可保存sed的輸出

 

使用sed在文本中定位文本的方式:

    x      x為一行號,比如1

    x,y    表示行號范圍從xy,2,5表示從第2行到第5

    /pattern/   查詢包含模式的行,/disk//[a-z]/

    /pattern/pattern/   查詢包含兩個模式的行,/disk/disks/

    /pattern/,x 在給定行號上查詢包含模式的行,/disk/,3

    x,/pattern/ 通過行號和模式查詢匹配行, 3,/disk/

    x,y!   查詢不包含指定行號xy的行

 

基本sed編輯命令:

    p     打印匹配行                     c/    用新文本替換定位文本

    =     顯示文件行號                    s     使用替換模式替換相應模式

    a/    在定位行號后附加新文本信息       r     從另一個文本中讀文本

    i/    在定位行號后插入新文本信息       w     寫文本到一個文件

    d     刪除定位行                      q     第一個模式匹配完成后退出或立即退出

    l     顯示與八進制ASCII代碼等價的控制字符        y  傳送字符

    n     從另一個文本中讀文本下一行,并附加在下一行   {}     在定位行執行的命令組

    g     將模式2粘貼到/pattern n/

 

基本sed編程舉例:

    使用p(rint)顯示行: sed -n '2p' temp.txt   只顯示第2,使用選項n

    打印范圍:  sed -n '1,3p' temp.txt         打印第1行到第3

    打印模式:  sed -n '/movie/'p temp.txt     打印含movie的行

    使用模式和行號查詢:  sed -n '3,/movie/'p temp.txt   只在第3行查找movie并打印

    顯示整個文件:  sed -n '1,$'p temp.txt      $為最后一行

    任意字符:  sed -n '/.*ing/'p temp.txt     注意是.*ing,而不是*ing

    打印行號:  sed -e '/music/=' temp.txt

    附加文本:(創建sed腳本文件)chmod u+x script.sed,運行時./script.sed temp.txt

        #!/bin/sed -f

        /name1/ a/             #a/表示此處換行添加文本

        HERE ADD NEW LINE.     #添加的文本內容

    插入文本: /name1/ a/ 改成 4 i/ 4表示行號,i插入

    修改文本: /name1/ a/ 改成 /name1/ c/ 將修改整行,c修改

    刪除文本: sed '1d' temp.txt 或者 sed '1,4d' temp.txt

    替換文本: sed 's/source/OKSTR/' temp.txt     source替換成OKSTR

             sed 's//$//g' temp.txt             將文本中所有的$符號全部刪除

             sed 's/source/OKSTR/w temp2.txt' temp.txt 將替換后的記錄寫入文件temp2.txt

    替換修改字符串: sed 's/source/"ADD BEFORE" &/p' temp.txt

             結果將在source字符串前面加上"ADD BEFORE",這里的&表示找到的source字符并保存

    sed結果寫入到文件: sed '1,2 w temp2.txt' temp.txt

                     sed '/name/ w temp2.txt' temp.txt

    從文件中讀文本: sed '/name/r temp2.txt' temp.txt

    在每列最后加文本: sed 's/[0-9]*/& Pass/g' temp.txt

    shellsed傳值: echo $NAME | sed "s/go/$REP/g"   注意需要使用雙引號

 

快速一行命令:

    's//.$//g'         刪除以句點結尾行

    '-e /abcd/d'       刪除包含abcd的行

    's/[][][]*/[]/g'   刪除一個以上空格,用一個空格代替

    's/^[][]*//g'      刪除行首空格

    's//.[][]*/[]/g'   刪除句號后跟兩個或更多的空格,用一個空格代替

    '/^$/d'            刪除空行

    's/^.//g'          刪除第一個字符,區別  's//.//g'刪除所有的句點

    's/COL/(.../)//g'  刪除緊跟COL的后三個字母

    's/^////g'         刪除路徑中第一個/

 

///////////////////////////////////////////////////////////////////////

 

、使用句點匹配單字符    句點“.”可以匹配任意單字符。“.”可以匹配字符串頭,也可以是中間任意字符。假定正在過濾一個文本文件,對于一個有1 0個字符的腳本集,要求前4個字符之后為X C,匹配操作如下:. . . .X C. . . .

2、在行首以^匹配字符串或字符序列    ^只允許在一行的開始匹配字符或單詞。在行首第4個字符為1,匹配操作表示為:^ . . . 1

3、在行尾以$匹配字符串或字符    可以說$^正相反,它在行尾匹配字符串或字符, $符號放在匹配單詞后。如果在行尾匹配單詞j e t 0 1,操作如下:j e t 0 1 $    如果只返回包含一個字符的行,操作如下:^ . $

4、使用*匹配字符串中的單字符或其重復序列    使用此特殊字符匹配任意字符或字符串的重復多次表達式。

5、使用/屏蔽一個特殊字符的含義    有時需要查找一些字符或字符串,而它們包含了系統指定為特殊字符的一個字符。如果要在正則表達式中匹配以* . p a s結尾的所有文件,可做如下操作:/ * / . p a s

6、使用[]匹配一個范圍或集合     使用[ ]匹配特定字符串或字符串集,可以用逗號將括弧內要匹配的不同字符串分開,但并不強制要求這樣做(一些系統提倡在復雜的表達式中使用逗號),這樣做可以增 加模式的可讀性。使用“ -”表示一個字符串范圍,表明字符串范圍從“ -”左邊字符開始,到“ -”右邊字符結束。假定要匹配任意一個數字,可以使用:[ 0 1 2 3 4 5 6 7 8 9 ]    要匹配任意字母,則使用:[ A - Z a - z ]表明從A - Za - z的字母范圍。

7、使用/{/}匹配模式結果出現的次數    使用*可匹配所有匹配結果任意次,但如果只要指定次數,就應使用/ { / },此模式有三種形式,即:

    pattern/{n/} 匹配模式出現n次。

    pattern/{n,/} 匹配模式出現最少n次。

    pattern/{n,m} 匹配模式出現nm次之間,n , m0 - 2 5 5中任意整數。

    匹配字母A出現兩次,并以B結尾,操作如下:A / { 2 / } B匹配值為A A B    匹配A至少4次,使用:A / { 4 , / } B

 

===============

替換單引號為空:

 

可以這樣寫:

sed 's/'"'"'//g'

 

sed 's/'\''//g'

 

sed s/\'//g

 

 

 

==============

 

在文件的第一行前面插入一行abc

 

sed -i '1i\abc' urfile


向AI問一下細節

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

AI

唐海县| 临潭县| 奉贤区| 阜新| 资阳市| 互助| 浮梁县| 凤凰县| 万载县| 临武县| 临城县| 湖州市| 岳普湖县| 遵化市| 龙川县| 金华市| 内丘县| 利川市| 穆棱市| 青龙| 紫金县| 桃园县| 绍兴县| 吴旗县| 鄂伦春自治旗| 延川县| 陈巴尔虎旗| 揭东县| 富宁县| 板桥市| 榆中县| 扎鲁特旗| 瑞金市| 商城县| 普宁市| 南部县| 白银市| 甘德县| 绵阳市| 邵东县| 通化县|