欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          總結(jié)linux中sed命令的使用方法

          總結(jié)linux中sed命令的使用方法

          linux之sed命令:

          1 初識(shí)sed

          sed編輯器被稱作流編輯器,它和vim這種的交互式文本編輯器不同,是根據(jù)命令來處理數(shù)據(jù)流中的數(shù)據(jù)。會(huì)執(zhí)行下列操作:

          • 一次從輸入中讀取一行數(shù)據(jù)(重復(fù)該操作直到全部行被讀取完)

          • 根據(jù)編輯器命令匹配數(shù)據(jù)

          • 按照命令修改數(shù)據(jù)流中的數(shù)據(jù)

          • 將新數(shù)據(jù)輸出到STDOUT(標(biāo)準(zhǔn)輸出)

          其中sed命令的可以從命令行中輸入,也可以從一個(gè)命令文件中讀取。

          sed -e script 添加script中指定的命令 sed -f file 添加file中指定的命令

          1.1 在命令行定義sed命令【推薦學(xué)習(xí):linux視頻教程】

          來看一個(gè)簡(jiǎn)單的文本替換示例:

          echo "hi,my name is xxx" | sed 's/xxx/kinsomy/' #修改文件 sed 's/xxx/kinsomy/' data.txt #執(zhí)行多個(gè)命令 用-e選項(xiàng),分號(hào)隔開 sed 's/xxx/kinsomy/; s/***/hhh/' data.txt

          將echo輸出的數(shù)據(jù)通過管道輸入sed中,然后用s命令進(jìn)行替換,用第二個(gè)斜杠后的數(shù)據(jù)替換掉第一個(gè)斜杠后匹配的數(shù)據(jù)。

          注意:sed操作文本文件中的數(shù)據(jù),僅僅是將修改的數(shù)據(jù)輸出到STDOUT,但是并不會(huì)修改文件本身的數(shù)據(jù)

          1.2 從文件讀取命令

          在一個(gè)文件script.sed中定義一系列的命令,方便復(fù)用。

          s/*/a s/x/b s/-/+

          

          # -f選項(xiàng)指定命令文件 sed -f script.sed data.txt

          2 sed基礎(chǔ)

          2.1替換標(biāo)記

          上面的例子echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'只會(huì)替換每一行中匹配到的第一個(gè)數(shù)據(jù),但是一行數(shù)據(jù)中若有多個(gè)匹配項(xiàng),則不能全部被替換掉。

          echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/' #輸出 hi,my name is kinsomy, i am xxx

          這個(gè)時(shí)候可以使用一些替換標(biāo)記substitution flag來設(shè)置替換的模式。替換標(biāo)記跟在替換字符串之后。

          s/pattern/replacement/flags

          數(shù)字,表示將替換掉第幾處被匹配到的數(shù)據(jù)

          echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2' #輸出 第二個(gè)xxx被替換成kinsomy hi,my name is xxx, i am kinsomy

          g,表示替換所有匹配到的數(shù)據(jù)

          echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g' #輸出 第二個(gè)xxx被替換成kinsomy hi,my name is kinsomy, i am kinsomy

          p,表示會(huì)打印出被匹配出來的行

          echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p' #輸出 hi,my name is kinsomy, i am xxx hi,my name is kinsomy, i am xxx
          w,將替換后輸出保存到指定文件 echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'

          2.3 行尋址

          上文說到sed命令是一行行讀取文本,進(jìn)行匹配操作數(shù)據(jù),知道所有行被遍歷完,如果這時(shí)候我們想要對(duì)特定的行做操作就要使用行尋址。 行尋址有兩種形式:

          數(shù)字形式表示行

          # 操作單行 $ sed '2s/xxx/***/' data.txt # 操作一定行區(qū)間[2,4] $ sed '2,4s/xxx/***/' data.txt # 操作某行開始到最后[2,endline] $ sed '2,$s/xxx/***/' data.txt

          文本模式過濾器

          首先在/etc/passwd內(nèi)找到kinsomy的記錄,然后將bash替換為csh。文本模式過濾器配合正則表達(dá)式會(huì)很強(qiáng)大。

          sed '/kinsomy/s/bash/csh/' /etc/passwd

          2.4 刪除行

          使用刪除命令d對(duì)文本進(jìn)行刪除操作。

          # 刪除所有文本 sed 'd' data.txt # 刪除單行 sed '2d' data.txt # 刪除行區(qū)間[2,3] sed '2,3d' data.txt # 刪除行區(qū)間[2,endline] sed '2,$d' data.txt # 刪除匹配文本aa的行 sed '/aa/d' data.txt # 刪除兩個(gè)匹配文本之間的文本 匹配到1和3的行之間的文本全部被刪除 sed '/1/,/3/d' data.txt

          2.5 插入、附加文本

          插入命令i在指定行前增加新行

          附加命令a在指定行后增加新行

          # 追加 echo "Line 2" | sed 'a pipe quote> Line 1' #插入 echo "Line 2" | sed 'i pipe quote> Line 1'

          2.6 修改行

          c命令用來修改一行數(shù)據(jù)

          # 修改第三行文本 sed '3c pipe quote> change line ' data.txt

          2.7 轉(zhuǎn)換命令

          命令格式 sed 'y/inchar/outchar'

          將inchar中的字符一一對(duì)應(yīng)地轉(zhuǎn)換成outchar的字符

          echo "This 1 is a test of 1 try." | sed 'y/123/456/' # 輸出 This 4 is a test of 4 try.

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)