日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

sed命令的用法

發布時間:2023/12/15 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 sed命令的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sed命令的詳細學習:

Sed的常用選項:

-n:只顯示sed匹配到的行。其余行不顯示。

-i:可以直接操作原文件。默認情況下sed不會改變原文件,但是-i選項可以修改原文件,此選項應慎用。

-r:可以使用標準正則表達式。默認情況下sed只支持基本正則表達式,但是加上-r選項后則支持擴展正則表達式

-e:多腳本共用。可以同時執行多個命令。

常見的用法(格式):

替換操作:s命令

sed -e 's/原來的內容/要替換的內容/g'文件名

sed -i's/原來的內容/要替換的內容/g' 文件名

追加操作:a命令(追加的指定內容的后面)
在第一行的后面追加一行
sed-i1axiaochaox.txt

在每行的頭添加字符,比如"HEAD",命令如下:

sed 's/^/HEAD&/g' test.file

在每行的行尾添加字符,比如“TAIL”,命令如下:

sed 's/$/&TAIL/g' test.file

1."^"代表行首,"$"代表行尾

2.'s/$/&TAIL/g'
s代表替換字符串,(c代表替換整行)
g代表每行出現的字符全部替換(如果想在特定字符處添加,g就有用了,否則只會替換每行第一個,而不繼續往后找了)
加上g跟不加g的區別:


加上-i跟不加-i的區別:

sed -n 's/root/ROOT/p' sed.txt sed替換結合-n選項和p命令,只顯示改動過的行


sed-i'$a要插入的文字'file.txt              在文件的結尾插入一行文字

sed-i'1isedcommandstart'myfile 行首添加一行
sed-i'$asedcommandend'myfile 行尾追加一行

sed -e '14s/yes/no/g' /etc/xinetd.d/tftp             將此文件的14行的yes換成no

sed -e 's/^/#/g' php_install.sh 將 每行開頭都添加上#號

刪除操作:d命令

1.刪除空白行

sed '/^$/d' passwd.txt == sed -i '/^$/d' passwd.txt

sed -e '/^$/'d passwd.txt(d放‘ ’外邊也可以)

sed -e '/^$/d' passwd.txt

cat passwd.txt|grep -v "^$")此命令也可以

2.刪除文件第二行

sed -e '2d' passwd.txt

3.刪除文件第3行到末尾(包括第三行)

sed -e '3,$d' passwd.txt

sed-i'2,$d'x.txt

4.刪除文件的最后一行

sed -e '$d' passwd.txt

5.刪除文件中所有以oldboy開頭的行

sed -e '/^oldboy/'d passwd.txt

6.刪除文件中所有以nologin結尾的行

sed -e '/nologin$/'d passwd.txt

7.刪除文件中以o開頭的行

sed -e '/^o,*/d' passwd.txt

8.刪除文件中以n結尾的行

sed -e '/n,*$/d' passwd.txt

9.刪除第1行到第44行

sed -e '1,44d' passwd.txt

sed命令升華:

^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行。 $ 匹配行結束,如:/sed$/匹配所有以sed結尾的行。 . 匹配一個非換行符的任意字符,如:/s.d/匹配s后接一個任意字符,最后是d。 * 匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格后緊跟sed的行。 [] 匹配一個指定范圍內的字符,如/[ss]ed/匹配sed和Sed。 [^] 匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。 (..) 匹配子串,保存匹配的字符,如s/(love)able/1rs,loveable被替換成lovers。 & 保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。 < 匹配單詞的開始,如:/ 匹配單詞的結束,如/love>/匹配包含以love結尾的單詞的行。 x{m} 重復字符x,m次,如:/0{5}/匹配包含5個0的行。 x{m,} 重復字符x,至少m次,如:/0{5,}/匹配至少有5個0的行。 x{m,n} 重復字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10個0的行。

來自: http://man.linuxde.net/sed
^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行。 $ 匹配行結束,如:/sed$/匹配所有以sed結尾的行。 . 匹配一個非換行符的任意字符,如:/s.d/匹配s后接一個任意字符,最后是d。 * 匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格后緊跟sed的行。 [] 匹配一個指定范圍內的字符,如/[ss]ed/匹配sed和Sed。 [^] 匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。 (..) 匹配子串,保存匹配的字符,如s/(love)able/1rs,loveable被替換成lovers。 & 保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。 < 匹配單詞的開始,如:/ 匹配單詞的結束,如/love>/匹配包含以love結尾的單詞的行。 x{m} 重復字符x,m次,如:/0{5}/匹配包含5個0的行。 x{m,} 重復字符x,至少m次,如:/0{5,}/匹配至少有5個0的行。 x{m,n} 重復字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10個0的行。

來自: http://man.linuxde.net/se

已匹配字符串標記&

正則表達式w匹配每一個字母,使用&替換它,&對應之前所匹配到的字母。

echo "thisisatestline"|sed 's/w/& /g'
t h i s i s a t e s t l i n e

正則表達式w+匹配每一個單詞,使用&替換它,&對應之前所匹配到的單詞。

echo "this is a test line"|sed 's/w+/& /g'
this is a test line

echo "this is a test line"|sed 's/w+/[&]/g'
[this] [is] [a] [test] [line]

附加方法:

echo "asdfghjkl"|sed -e 's/(.)/1 /g'

將每個單詞都加上雙引號
echo this is a test line|sed 's/w+/“&”/g'
“this” “is” “a” “test” “line”
在以root開頭的

sed -e 's/^root/&_localhost/g' passwd.txt |grep root
root_localhost:x:0:0:root:/root:/bin/bash

11.sed 命令分組匹配分隔

解釋:(.) 里面有幾個點就是已幾個字符為一組

1#:這個就是1后面是什么就以什么為分隔符

以每個字符為分隔后面加上空格

[root@www ~]# echo "asdfghjklqwertyuiopzxvcbnm"|sed 's/(.)/1 /g'
a s d f g h j k l q w e r t y u i o p z x v c b n m

以每2個字符為分隔后面加上空格

[root@www ~]# echo "asdfghjklqwertyuiopzxvcbnm"|sed 's/(..)/1 /g'
as df gh jk lq we rt yu io pz xv cb nm

以每3個字符為分隔后面加上空格
[root@www ~]# echo "asdfghjklqwertyuiopzxvcbnm"|sed 's/(...)/1 /g'
asd fgh jkl qwe rty uio pzx vcb nm

以#號為分隔符分隔每個字符

echo "asdfghjklqwertyuiopzxvcbnm"|sed 's/(.)/1#/g'
a#s#d#f#g#h#j#k#l#q#w#e#r#t#y#u#i#o#p#z#x#v#c#b#n#m#

以空格為分隔符按照4242的方式分隔

ed -e 's/(....)(..)/1 2 /g' sed.txt|head -n1
root :x :0:0 :r oot: /r oot: /b in/b as h

12.子串匹配標記1

echo aaa BBB|sed 's/([a-z]+)/1/'
aaa BBB

echo aaa BBB|sed 's/([a-z]+) ([A-Z]+)/1/'
aaa

echo aaa BBB|sed 's/([a-z]+) ([A-Z]+)/1 2/'

aaa BBB

echo aaa BBB|sed 's/([a-z]+) ([A-Z]+)/2 1/'
BBB aaa

13.

14.

15.

16.

17.

18.

19.

20.

總結

以上是生活随笔為你收集整理的sed命令的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。