Linux下sed命令的用法介紹

這篇文章主要講解了“Linux下sed命令的用法介紹”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux下sed命令的用法介紹”吧!

這篇文章主要講解了“Linux下sed命令的用法介紹”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux下sed命令的用法介紹”吧!

創(chuàng)新互聯(lián)長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東山企業(yè)提供專(zhuān)業(yè)的做網(wǎng)站、成都網(wǎng)站建設(shè),東山網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

Linux sed命令詳細(xì)說(shuō)明

sed是一種用于過(guò)濾和轉(zhuǎn)換文本的流編輯器。用于對(duì)輸入流(文件或來(lái)自管道的輸入)執(zhí)行基本文本轉(zhuǎn)換。

雖然sed在某些方面類(lèi)似于允許腳本編輯(如ed)的編輯器,但它的工作方式是只傳遞一次輸入,因此效率更高。

思考:

查看當(dāng)前IP

[root@cjcos01 cjc]# ifconfig

通過(guò)ifconfig雖然可以查看IP,但是打印出很多并不關(guān)注的信息,如何去掉這部分無(wú)用的信息?

可以通過(guò)sed加grep實(shí)現(xiàn),方法見(jiàn)后面的示例。

測(cè)試數(shù)據(jù)

[root@cjcos01 cjc]# cat t1.txt 

tao花庵歌tao花塢里tao花庵,tao花庵下tao花仙;tao花仙人種tao樹(shù),又摘tao花賣(mài)酒錢(qián)。酒醒只在花前坐,酒醉還來(lái)花下眠;半醒半醉日復(fù)日,花落花開(kāi)年復(fù)年。但愿老死花酒間,不愿鞠躬車(chē)馬前;車(chē)塵馬足富者趣,酒盞花枝貧者緣。若將富貴比貧賤,一在平地一在天;若將貧賤比車(chē)馬,他得驅(qū)馳我得閑。別人笑我太瘋癲,我笑他人看不穿;不見(jiàn)五陵豪杰墓,無(wú)花無(wú)酒鋤作田。

1 打印行

打印第二行 

[root@cjcos01 cjc]# sed -n '2p' /cjc/t1.txt

tao花塢里tao花庵,tao花庵下tao花仙;

打印第2-5行

[root@cjcos01 cjc]# sed -n '2,5p' /cjc/t1.txt

tao花塢里tao花庵,tao花庵下tao花仙;tao花仙人種tao樹(shù),又摘tao花賣(mài)酒錢(qián)。酒醒只在花前坐,酒醉還來(lái)花下眠;半醒半醉日復(fù)日,花落花開(kāi)年復(fù)年。

打印第10行到結(jié)尾行

[root@cjcos01 cjc]# sed -n '10,$p' /cjc/t1.txt

別人笑我太瘋癲,我笑他人看不穿;不見(jiàn)五陵豪杰墓,無(wú)花無(wú)酒鋤作田。

打印第2行,第6行,第8,9,10行

[root@cjcos01 cjc]# sed -n '2p;6p;8,10p' /cjc/t1.txt

tao花塢里tao花庵,tao花庵下tao花仙;但愿老死花酒間,不愿鞠躬車(chē)馬前;若將富貴比貧賤,一在平地一在天;若將貧賤比車(chē)馬,他得驅(qū)馳我得閑。別人笑我太瘋癲,我笑他人看不穿;

打印含有tao字的行

[root@cjcos01 cjc]# sed -n '/tao/p' /cjc/t1.txt 

tao花庵歌tao花塢里tao花庵,tao花庵下tao花仙;tao花仙人種tao樹(shù),又摘tao花賣(mài)酒錢(qián)。

打印"酒"字開(kāi)頭的行

[root@cjcos01 cjc]#  sed -n '/^酒/p' /cjc/t1.txt 

酒醒只在花前坐,酒醉還來(lái)花下眠;

打印"。"結(jié)尾的行

[root@cjcos01 cjc]#  sed -n '/\。$/p' /cjc/t1.txt 

tao花仙人種tao樹(shù),又摘tao花賣(mài)酒錢(qián)。半醒半醉日復(fù)日,花落花開(kāi)年復(fù)年。車(chē)塵馬足富者趣,酒盞花枝貧者緣。若將貧賤比車(chē)馬,他得驅(qū)馳我得閑。不見(jiàn)五陵豪杰墓,無(wú)花無(wú)酒鋤作田。

2 插入行

[root@cjcos01 cjc]# cp t1.txt t1.txt.bak

人為多愁少年老,花為無(wú)愁老少年。年老少年都不管,且將詩(shī)酒醉花前。

行前添加,寫(xiě)入源文件

[root@cjcos01 cjc]# sed -i '2i 人為多愁少年老,花為無(wú)愁老少年。' /cjc/t1.txt

[root@cjcos01 cjc]# cat t1.txt

tao花庵歌人為多愁少年老,花為無(wú)愁老少年。tao花塢里tao花庵,tao花庵下tao花仙;......

行后添加(直接修改原文件)

[root@cjcos01 cjc]# sed -i '2a 年老少年都不管,且將詩(shī)酒醉花前。' /cjc/t1.txt

[root@cjcos01 cjc]# cat t1.txt

tao花庵歌人為多愁少年老,花為無(wú)愁老少年。年老少年都不管,且將詩(shī)酒醉花前。tao花塢里tao花庵,tao花庵下tao花仙;......

3 替換行(直接修改原文件) 

[root@cjcos01 cjc]# sed -i '2c 閑來(lái)寫(xiě)就青山賣(mài),不使人間造孽錢(qián)。' /cjc/t1.txt

[root@cjcos01 cjc]# cat t1.txt

tao花庵歌閑來(lái)寫(xiě)就青山賣(mài),不使人間造孽錢(qián)。年老少年都不管,且將詩(shī)酒醉花前。......

4 替換字符 

-n 's/old/new/p' 將文件中每行的第一個(gè)old字符換成new字符,打印出只發(fā)生變化的行,且源文件內(nèi)容不變

[root@cjcos01 cjc]# sed -n 's/tao/荷/p' /cjc/t1.txt 

荷花庵歌荷花塢里tao花庵,tao花庵下tao花仙;荷花仙人種tao樹(shù),又摘tao花賣(mài)酒錢(qián)。

-n 's/old/new/pg':將文件中全部的old字符換成new字符,打印出只發(fā)生變化的行,且源文件內(nèi)容不變。

[root@cjcos01 cjc]# sed -n 's/tao/荷/pg' /cjc/t1.txt 

荷花庵歌荷花塢里荷花庵,荷花庵下荷花仙;荷花仙人種荷樹(shù),又摘荷花賣(mài)酒錢(qián)。

-n 's/old/new/p3g' :將文件中每行從第3個(gè)old字符開(kāi)始換成new字符,打印出只發(fā)生變化的行,且源文件內(nèi)容不變

[root@cjcos01 cjc]# sed -n 's/tao/荷/p3g' /cjc/t1.txt 

tao花塢里tao花庵,荷花庵下荷花仙;tao花仙人種tao樹(shù),又摘荷花賣(mài)酒錢(qián)。

-i,將文件中每行的第一個(gè)old字符換成new字符,修改源文件內(nèi)容

[root@cjcos01 cjc]# sed -i 's/tao/荷/g' /cjc/t1.txt 

[root@cjcos01 cjc]# sed -i 's/荷/tao/g' /cjc/t1.txt 

5 刪除行

刪除第2行

[root@cjcos01 cjc]# sed -i '2d' /cjc/t1.txt

刪除第3到5行

[root@cjcos01 cjc]# sed -i '3,5d' /cjc/t1.txt

刪除第2行,第4,5,6行

[root@cjcos01 cjc]# sed -i '2d;4,6d' /cjc/t1.txt

舉例:

例1: 只顯示ifconfig中的IP地址

[root@cjcos01 ~]# ifconfig |grep "inet"|grep -v "inet6"|grep -v "127.0.0.1"|grep -v "122.1"|sed 's/netmask.*//'|sed 's/^.*inet//' 192.168.38.10

例2:去掉ssh配置文件中的帶#行和空行,不修改源文件,將結(jié)果打印到前臺(tái)

[root@cjcos01 cjc]# echo >t1.txt

[root@cjcos01 cjc]# cat /etc/ssh/ssh_config > t1.txt

[root@cjcos01 cjc]# sed 's/#.*//g' /cjc/t1.txt |sed '/^$/d'

Host *GSSAPIAuthentication yesForwardX11Trusted yesSendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGESSendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENTSendEnv LC_IDENTIFICATION LC_ALL LANGUAGESendEnv XMODIFIERS

例3:每一行結(jié)尾為.的換成!("."需要加轉(zhuǎn)義符),不改變?cè)次募?指定-i會(huì)改變?cè)次募?

[root@cjcos01 cjc]# sed -n 's/\.$/!/p' /cjc/t1.txt

GSSAPIAuthentication yes!ForwardX11Trusted yes!SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT!

例4:以H開(kāi)頭的行末尾加上@@@

[root@cjcos01 cjc]# sed -n 's/^H.*$/&@@@/p' /cjc/t1.txt 

Host *@@@

sed幫助信息:

[root@cjcos01 ~]# sed --helpUsage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...  -n, --quiet, --silent                 suppress automatic printing of pattern space  -e script, --expression=script                 add the script to the commands to be executed  -f script-file, --file=script-file                 add the contents of script-file to the commands to be executed  --follow-symlinks                 follow symlinks when processing in place  -i[SUFFIX], --in-place[=SUFFIX]                 edit files in place (makes backup if SUFFIX supplied)  -c, --copy                 use copy instead of rename when shuffling files in -i mode  -b, --binary                 does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX (                 open files in binary mode (CR+LFs are not treated specially))  -l N, --line-length=N                 specify the desired line-wrap length for the `l' command  --posix                 disable all GNU extensions.  -r, --regexp-extended                 use extended regular expressions in the script.  -s, --separate                 consider files as separate rather than as a single continuous                 long stream.  -u, --unbuffered                 load minimal amounts of data from the input files and flush                 the output buffers more often  -z, --null-data                 separate lines by NUL characters  --help                 display this help and exit  --version                 output version information and exitIf no -e, --expression, -f, or --file option is given, then the firstnon-option argument is taken as the sed script to interpret.  Allremaining arguments are names of input files; if no input files arespecified, then the standard input is read.GNU sed home page: <http://www.gnu.org/software/sed/>.General help using GNU software: <http://www.gnu.org/gethelp/>.E-mail bug reports to: <bug-sed@gnu.org>.Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.[root@cjcos01 ~]# man sedNAME       sed - stream editor for filtering and transforming textSYNOPSIS       sed [OPTION]... {script-only-if-no-other-script} [input-file]...DESCRIPTION       Sed  is  a stream editor.  A stream editor is used to perform basic text transformations       on an input stream (a file or input from a pipeline).  While in some ways similar to  an       editor which permits scripted edits (such as ed), sed works by making only one pass over       the input(s), and is consequently more efficient.  But it is  sed's  ability  to  filter       text in a pipeline which particularly distinguishes it from other types of editors.......SEE ALSO       awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, any of various books on sed, the sed       FAQ (http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/.       The full documentation for sed is maintained as a Texinfo manual.  If the info and sed       programs are properly installed at your site, the command              info sed[root@cjcos01 ~]# info sedFile: sed.info,  Node: Top,  Next: Introduction,  Up: (dir)sed, a stream editor********************This file documents version 4.2.2 of GNU `sed', a stream editor.......

新聞標(biāo)題:Linux下sed命令的用法介紹
鏈接地址:http://muchs.cn/article16/jegg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化靜態(tài)網(wǎng)站、App開(kāi)發(fā)定制開(kāi)發(fā)、建站公司、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)