sed和awk的常用例項

2022-06-08 14:00:14 字數 3904 閱讀 8936

一、文字間隔

1、在每一行後面增加一空行

sed g guo.sh

awk ''

2、將檔案中原來的空行刪掉,並在在每一行後邊增加一空行

sed '/^$/d;g '

awk '!/^$/ '

3在匹配式樣的行前插入一空行

sed '/good/i\\'

sed '/hello/'

awk ''

4、在匹配式樣的行後插入一空行

sed '/good/a\\'

sed '/hello/g'

awk ''

5、在匹配式樣的行前、行後各插入一空行

sed '/hello/'

awk ''

二、文字的替換

1、在每一行查詢到good,然後把good替換為bad

sed 's/good/bad/'只把每行的第乙個good替換為bad

sed 's/good/bad/2'只把每行的第二個good替換為bad

sed 's/good/bad/g'把每一行的所有good替換為bad

sed 's/\(.*\)good/\1bad/'只把每一行的的最後乙個good替換位bad

sed 's/\(.*\)good\(.*good\)/\1bad\2/'只把每一行的的倒數第二個good替換位bad

awk   ''只把每行的第乙個good替換為bad

awk   ''把每一行的所有good替換為bad

cat  test |tr 'root' 'good'

cat    test |tr 'root' 'god'

sed   's/root/good/p' test

awk   '' test

awk   '' test

通過對比可知tr的替換兩個字串必須等長度,而sed不能把說有的root替換

2、只在出現字串fell字串的前提下,將找到的行中的good替換為bad

sed  '/fell/ s/good/bad/g'

awk   ''

3、只在不出現字串fell字串的前提下,將找到的行中的good替換為bad

sed '/fell/ !s/good/bad/g'

awk ''

4、不管是good、fell還是sun,一路替換為bad

sed 's/good/bad/g;s/fell/bad/g;s/sun/bad/g'

sed 's/good\|fell\|sun/bad/g'

awk ''

5、倒置所有行,第一行變為最後一行(模擬tac)

sed '1!g;h;$!d'

sed -n '1!g;h;$p'

awk ' end'

6、將每兩行連線為一行

sed '$!n;s/\n/ /'

awk ''

7、在檔案中每隔5行顯示一空行

sed '0~5g'

sed 'n;n;n;n;g'

awk '}'

三、選擇性的顯示特定行

1、顯示檔案的前10行

sed10q

awk ''

2、顯示檔案的第一行

sed q

awk ''

3、顯示檔案的倒數第二行

sed -e '$!' -e x當檔案只有一行時,輸出空行

sed -e '1' -e '$!' -e x當檔案只有一行時,顯示該行

sed -e '1' -e '$!' -e x當檔案只有一行時,不輸出

awk ' end'當檔案只有一行時,輸出空行

4、只顯示匹配正規表示式的行

sed -n '/good/p'

sed  '/good/!d'

awk '/good/ '

awk '/good/'

grep 'good'

5、只顯示不匹配正規表示式的行

sed -n '/good/!p'

sed '/good/d'

awk '!/good/ '

grep -v 'good'

6、顯示匹配行的上一行,而不顯示匹配行

sed -n '/good/;h'

awk '/good/

7、顯示匹配行的下一行,而不顯示匹配行

sed -n '/good/'

awk '/23/'

8、顯示文字的制定行

sed -n '3,5p'

sed '3,5!d'

awk ' '

目錄: 1、不顯示檔案中的空行 2、刪除檔案的1到5行3、刪除檔案注釋行4、列印匹配行5、顯示從字元1到字元2的中間行6、匹配特別表示式7、替代文字

1、不顯示檔案中的空行

[guo@guo~]$ grep -v '^$' rc.local

[guo@guo~]$ sed -e '/^$/d' rc.local

[guo@guo~]$ awk '!/^$/' rc.local

2、刪除檔案的1到5行

[guo@guo~]$ cat test

[guo@guo~]$ sed -e '1,5d' test

[guo@guo~]$ awk ' ' test

3、刪除檔案注釋行

[guo@guo~]$ sed -e "/^#/d" rc.local

[guo@guo~]$ awk '!/^#/' rc.local

[guo@guo~]$ grep -v '^#' rc.local

5、顯示從字元1到字元2的中間行

[guo@guo~]$ sed -n -e '/hello/,/sorry/p' test1

[guo@guo~]$ awk '/hello/,/sorry/ ' test1

6、匹配特別表示式

[guo@guo~]$ sed -n -e '/main[[:space:]]*(/,/^}/p' for.c

1、通過awk訪問系統環境變數

[guo@guoawk]$ awk 'begin '

/home/guo

/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin

2、awk中的算術運算子

[guo@guoawk]$ awk 'begin '

3+2=5

[guo@guoawk]$ awk 'begin '

2^10=1024

[guo@guoawk]$ awk 'begin '

(3+1)*4/2=8

awk支援的運算子有+ - * / % ^。

4、awk的迴圈

if語句

[guo@guoawk]$ cat num

12243535

890232

232 9809

890 -8990

[guo@guoawk]$ awk '' num

890232

890 -8990

[guo@guoawk]$ awk '}' num

890232

890islarger than232

890 -8990

890islarger than-8990

if/else

[guo@guoawk]$ awk '' num

3535

8909809

890[guo@guoawk]$ awk ' else print $2}' num

3535

19809

22023年10月9日 14:50:38

普通青年版:

sed '1d;$d'

文藝青年版:

sed -n '1!p;n;$q;d'

二逼青年版:

sed -r ':a;n;$!ba;s/^[^\n]+\n(.+)\n[^\n]+$/\1/'

sed和awk的常用例項

一 文字間隔 1 在每一行後面增加一空行 sed g guo.sh awk 2 將檔案中原來的空行刪掉,並在在每一行後邊增加一空行 sed d g awk 3在匹配式樣的行前插入一空行 sed good i sed hello awk 4 在匹配式樣的行後插入一空行 sed good a sed h...

sed 和 awk 的運用

n 遮蔽預設輸出,預設sed會輸出讀取文件的全部內容 r 讓sed支援擴充套件正則 i sed直接修改原始檔,預設sed只是通過記憶體臨時修改檔案,原始檔無影響 sed n 3,6p etc passwd 答案 sed i s usr local usr src g file 答案 awk home...

sed常用例項

把檔案中還有 today 字串的資料行中的 tom 字串替換成 john sed e today s tom john g input.dat把檔案中第三行 的資料替換成句子 young is better sed e 5c young is better input.dat把檔案中第3至10行的資...