新聞中心
Linux作為一款開源操作系統(tǒng),越來越受到人們的歡迎。而作為Linux的核心要素之一的命令行,sed命令在其中的重要程度也不容小覷。在本文中,我們將為大家介紹30個(gè)常用的sed指令,以幫助大家更加輕松地學(xué)習(xí)和使用Linux。

站在用戶的角度思考問題,與客戶深入溝通,找到益陽網(wǎng)站設(shè)計(jì)與益陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋益陽地區(qū)。
一、sed是什么?
sed是“stream editor”的縮寫,用于在純文本文件中進(jìn)行替換、刪除、插入等操作。它可以在命令行中使用,也可以在腳本中被調(diào)用。sed的一大優(yōu)勢(shì)就是它只作用于所選定的文本行。
二、基本語法
sed的基本語法格式如下:
“`
sed [options] ‘command’ [file]
“`
其中,options和file是可選參數(shù),command是必選參數(shù)。command可以是一系列對(duì)文本的操作命令,如替換、刪除、插入等。
三、30個(gè)常用的sed指令
1. 替換字符串
替換字符串是sed的一個(gè)基本操作,它可以在指定的文本行中將一部分字符串替換成另一部分字符串。比如:
“`
$ sed ‘s/old/new/g’ file.txt
“`
以上命令表示將文件file.txt中的所有old替換成new,g表示一行中出現(xiàn)多次需要替換的字符串時(shí)都進(jìn)行替換。
2. 替換指定行
如果要只在文件的某些行中進(jìn)行替換,則可以使用標(biāo)號(hào)來限定行號(hào)的范圍,比如:
“`
$ sed ‘2s/old/new/g’ file.txt
“`
以上命令表示將文件file.txt中的第二行中的old替換成new。
3. 只替換匹配的字符串
如果希望只替換滿足某些條件的字符串,則可使用正則表達(dá)式來過濾匹配的文本。比如:
“`
$ sed ‘/^To/s/old/new/g’ file.txt
“`
以上命令表示只將以To開頭的行中的old替換成new。
4. 在行末添加文字
使用sed命令可以在行末添加文字。比如:
“`
$ sed ‘s/$/new/’ file.txt
“`
以上命令表示在文件file.txt中的每行行末添加new。
5. 刪除指定行
若要?jiǎng)h除文件中的指定行,可以使用d命令。比如:
“`
$ sed ‘2d’ file.txt
“`
以上命令表示刪除文件file.txt中的第二行。
6. 刪除特定字符串
若要?jiǎng)h除指定文本行中的字符串,可以使用s命令(替換命令)。比如:
“`
$ sed ‘s/old//g’ file.txt
“`
以上命令表示刪除文件file.txt中的所有old字符串。
7. 替換逗號(hào)為|
用sed命令也可以進(jìn)行逗號(hào)和豎線的轉(zhuǎn)換。比如:
“`
$ sed ‘s/,/|/g’ file.csv > newfile.csv
“`
以上命令表示將文件file.csv中的逗號(hào)替換成豎線,并將結(jié)果寫入newfile.csv中。
8. 在特定行之后添加新行
在特定行的下面添加新行是一個(gè)常見的需求。使用sed命令,只需將行號(hào)指定到后面并添加文本即可,比如:
“`
$ sed ‘2a\add a new line’ file.txt
“`
以上命令表示在文件file.txt的第二行下添加一行“add a new line”。
9. 添加注釋
如果需要在文件的某些位置添加注釋,只需使用#號(hào)即可。比如:
“`
$ sed ‘2a\# add a comment’ file.txt
“`
以上命令表示在文件file.txt的第二行下添加一行注釋“# add a comment”。
10. 刪除多余的空白行
批量清除空白行是使用sed命令的常見任務(wù)之一,例如:
“`
$ sed ‘/^$/d’ file.txt
“`
以上命令表示刪除文件file.txt中的所有空白行。
11. 行首插入文字
插入特定文本到行首也是sed命令可以完成的任務(wù)之一,例如:
“`
$ sed ‘s/^/add text to the begining: /’ file.txt
“`
以上命令表示在文件file.txt中的每行行首添加“add text to the begining:”。
12. 將指定范圍內(nèi)的行合并為一行
將多行文本合并為一行也是一種相當(dāng)實(shí)用的任務(wù)。sed命令可以通過使用N命令來實(shí)現(xiàn),例如:
“`
$ sed -n ‘1,3H; 4,$ { x; s/\n/ /g; p}’ file.txt
“`
以上命令表示將1至3行的內(nèi)容合并到一個(gè)緩沖區(qū)后,在第4行及之后的行中,將所有換行符替換成空格,并將結(jié)果輸出。
13. 對(duì)行進(jìn)行編號(hào)
在對(duì)Linux命令行進(jìn)行某些操作時(shí),經(jīng)常需要對(duì)行進(jìn)行編號(hào)??梢允褂靡韵旅睿?/p>
“`
$ sed = file.txt | sed ‘N; s/\n/\t/’
“`
以上命令表示對(duì)文件file.txt進(jìn)行行號(hào)編號(hào),并在行號(hào)與行內(nèi)容之間加上一個(gè)制表符(/t)。
14. 抽取指定行
抽取文件中的特定行可使用如下命令:
“`
$ sed -n ‘1p’ file.txt
“`
以上命令表示抽取文件file.txt中的之一行。
15. 批量添加行號(hào)
如果需要批量添加行號(hào),則可以使用如下命令:
“`
$ sed = file.txt | sed ‘N;s/\n/\t/;’
“`
以上命令表示將文件file.txt的文本行編號(hào)并用制表符分隔行號(hào)和行內(nèi)容。
16. 刪除指定范圍內(nèi)的所有行
如果需要?jiǎng)h除文件中的指定行,可以使用如下命令:
“`
$ sed ‘1, 5d’ file.txt
“`
以上命令表示刪除文件file.txt中的第1至5行。
17. 刪除指定匹配的行
如果需要?jiǎng)h除指定文本中的某些行,可以使用如下命令:
“`
$ sed ‘/text/d’ file.txt
“`
以上命令表示刪除文件file.txt中包含文本“text”的所有行。
18. 批量替換字符串
批量替換字符串可以使用如下命令:
“`
$ sed ‘s/text1/text2/g’ file.txt > newfile.txt
“`
以上命令表示將文件file.txt中的所有text1替換成text2并將結(jié)果寫入newfile.txt。
19. 批量插入空白行
與批量刪除空白行相比,批量插入空白行也是一個(gè)常見需求,可以使用如下命令:
“`
$ sed G file.txt
“`
以上命令表示在文本file.txt的每一行之后添加一行空行。
20. 批量添加特定內(nèi)容
在文件中批量添加特定內(nèi)容,可以使用如下命令:
“`
$ sed ‘1i\ add a new line at the beginning’ file.txt
“`
以上命令表示在文件file.txt的之一行之前添加一行文本“add a new line at the beginning”。
21. 刪除字符串末尾的空格
刪除字符串末尾的空格也是通過sed命令實(shí)現(xiàn)的,比如:
“`
$ sed ‘s/[ \t]*$//’ file.txt
“`
以上命令表示刪除文件file.txt中每一行末尾的空格和制表符。
22. 刪除雙引號(hào)
刪除文件中的雙引號(hào)也是常見的需求之一,可以使用如下命令:
“`
$ sed ‘s/”//g’ file.txt
“`
以上命令表示刪除文件file.txt中出現(xiàn)的所有雙引號(hào)。
23. 刪除行尾的逗號(hào)
刪除行尾逗號(hào)也可以使用sed命令實(shí)現(xiàn),比如:
“`
$ sed ‘s/,$//’ file.txt
“`
以上命令表示刪除文件file.txt中每行末尾的逗號(hào)。
24. 合并行
合并文本文件中的兩行可以使用如下方式:
“`
$ sed ‘N;s/\n/ /’ file.txt
“`
以上命令表示將文件file.txt中每兩行合并為一行。
25. 快速編輯文件
sed命令可以使用戶快速編輯大型文本文件,例如:
“`
$ sed -i ‘s/text1/text2/g’ file.txt
“`
以上命令表示將文件file.txt中所有的text1替換成text2。使用-i選項(xiàng)可使sed命令直接編輯源文件,不需使用額外的輸出文件。
26. 批量刪除每行行首的空格
批量刪除每行行首的空格也是常見的需求之一,可以使用如下命令:
“`
$ sed ‘s/^[ \t]*//’ file.txt
“`
以上命令表示刪除文件file.txt中每行開頭多余的空格和制表符。
27. 使用正則表達(dá)式查找和替換
使用sed命令可以使用正則表達(dá)式進(jìn)行查找和替換,例如:
“`
$ sed ‘s/[0-9]*//g’ file.txt
“`
以上命令表示刪除文件file.txt中的所有數(shù)字。
28. 刪除指定范圍內(nèi)的行
如果需要?jiǎng)h除特定范圍內(nèi)的行,可以使用如下命令:
“`
$ sed ‘2,4d’ file.txt
“`
以上命令表示刪除文件file.txt中的第2至4行。
29. 批量添加特定文本
在對(duì)批量文本進(jìn)行操作時(shí),添加特定文本可以使用如下命令:
“`
$ sed ‘s/^/new text: /’ file.txt
“`
以上命令表示在文件file.txt中的每行行首添加“new text: ”。
30. 替換指定范圍內(nèi)的行
如果需要在指定的范圍內(nèi)替換文本,則可以使用如下命令:
“`
$ sed ‘2,$ s/text1/text2/g’ file.txt
“`
以上命令表示在文件file.txt中的第2行及之后的所有行中將文本text1替換成text2。
綜上,sed指令是Linux命令行中不可或缺的一部分。本文介紹了30個(gè)較為實(shí)用的sed指令,希望讀者能夠在日常的工作中靈活運(yùn)用sed命令,提高自己的工作效率。
相關(guān)問題拓展閱讀:
- linux shell sed命令用法
- linux指令 sed指令怎么選擇列
linux shell sed命令用法
s/::RE::/::DT::/::OPTION::
是這個(gè)語法…
sed替換命令的結(jié)構(gòu)為: s/A/B/
你在最后少了個(gè)斜杠/,結(jié)吵沖差構(gòu)不完整判納,會(huì)報(bào)升皮錯(cuò)。
修改為:
A=hello
ar=$(date “+%Y%m%d”)
echo A | sed “s/he/$Var/”
我注意到你結(jié)尾脊灶兄忘寫櫻襲斜杠了。
echo $A | sed 辯答”s/he/$Var/”
$ echo $A | sed “s/he/$Var/游握孫”
llo
幫你試過了神鏈皮孝
linux之sed用法
sed是一個(gè)很好的文件處理工具,本身是一個(gè)管道命令,主要是以行為單位進(jìn)行處理,可以將數(shù)據(jù)行進(jìn)行替換、刪除、新增、選取等特定工作。
sed命令行格式為:
sed ‘command’ 輸入文本
常用選項(xiàng):
n∶使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會(huì)被列出到螢?zāi)簧?。但如果加?-n 參數(shù)后,則只有經(jīng)過sed 特殊處理的那一行(或者動(dòng)作)才會(huì)被列出來。
e∶直接在指令列模式上進(jìn)行 sed 的動(dòng)作編輯;
f∶直接將 sed 的動(dòng)作寫在一個(gè)檔案內(nèi), -f filename 則可以執(zhí)行 filename 內(nèi)的sed 動(dòng)作;
r∶sed 的動(dòng)作支援的是延伸型耐嫌正規(guī)表示法的語法。(預(yù)設(shè)是基礎(chǔ)正規(guī)表示法語法)
i∶直接修改讀取的檔案內(nèi)容,而不是由螢?zāi)惠敵觥?/p>
常用命令:
a ∶新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)~
c ∶取代, c 的后面昌歷手可以接字串,這些字串可以取代 n1,n2 之間的行!
d ∶刪除,因?yàn)槭莿h除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
p ∶列印,亦即將某個(gè)選擇的資料印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)作~
s ∶取代,可以直接進(jìn)行取代的工作哩!通常這個(gè) s 的動(dòng)作可以搭配正規(guī)表示法!例如 1,20s/old/new/g 就是。
舉例:(假設(shè)我們有一文件名為ab)
刪除某行
# sed ‘1d’ ab#刪除之一行
# sed ‘$d’ ab#刪除最后一行
# sed ‘1,2d’ ab#刪除之一行到第二行
# sed ‘2,$d’ ab#刪除第二行到最后一行
顯示某行
. # sed -n ‘1p’ ab#顯示之一行
# sed -n ‘$p’ ab#顯示最后一行
# sed -n ‘1,2p’ ab#顯示之一行到第二行
# sed -n ‘2,$p’ ab#顯示第二行到最后一行
使用模式進(jìn)行查詢
# sed -n ‘/ruby/p’ ab #查詢爛悄包括關(guān)鍵字ruby所在所有行
# sed -n ‘/\$/p’ ab#查詢包括關(guān)鍵字$所在所有行,使用反斜線\屏蔽特殊含義
增加一行或多行字符串
# cat ab
Hello!
ruby is me,welcome to my blog.
end
# sed ‘1a drink tea’ ab #之一行后增加字符串”drink tea”
Hello!
drink tea
ruby is me,welcome to my blog.
end
# sed ‘1,3a drink tea’ ab #之一行到第三行后增加字符串”drink tea”
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
# sed ‘1a drink tea\nor coffee’ ab #之一行后增加多行,使用換行符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
代替一行或多行
# sed ‘1c Hi’ ab #之一行代替為Hi
Hi
ruby is me,welcome to my blog.
end
# sed ‘1,2c Hi’ ab#之一行到第二行代替為Hi
Hi
end
替換一行中的某部分
格式:sed ‘s/要替換的字符串/新的字符串/g’ (要替換的字符串可以用正則表達(dá)式)
# sed -n ‘/ruby/p’ ab | sed ‘s/ruby/bird/g’ #替換ruby為bird
# sed -n ‘/ruby/p’ ab | sed ‘s/ruby//g’#刪除ruby
插入
# sed -i ‘$a bye’ ab#在文件ab中最后一行直接輸入”bye”
# cat ab
Hello!
ruby is me,welcome to my blog.
end
bye
sed 命令查找與替換:
(1)刪除第2,3行:sed ‘2,3d’ test.txt > new.txt
(2)替換:
替換所有:sed ‘s/abc/ABC/’ test.txt >new.txt
查找: sed -n “/abc/p” test.txt
匹配字符串中的一部分: echo abc123 | sed ‘s/\(*\).*/\1/’
echo “ab001_ac” | sed ‘s/\(.*\)\_\(.*\)/\1,\2/’ \1表示之一個(gè)括號(hào)匹配的字符
echo “ABC01” | sed “s/*\(*\)/\1/”\1匹配后面的數(shù)字部分
echo “ab001_AC88” | sed ‘s/*\(*$\)/\1/’
echo “a001_aaST88” | sed “s/\(.*\)\(\)\(*$\)/\2/”
sed “s/^/\”&/” 32.txt 行首添加雙引號(hào)
sed “s/$/\”&/” 33.txt 行尾添加雙引號(hào)
sed “s/*$//” 35.txt 替換行尾空格
只顯示指定行范圍的文件內(nèi)容,例如:
# 只查看文件的第100行到第200行
sed -n ‘100,200p’ mysql_slow_query.log
sed -n $n”p” 22.txt 顯示某一行 n=2
sed大小寫轉(zhuǎn)換?
如何先查找,再追加所查找的行到一個(gè)新的文件:
(3)查找Tab:
sed “s/\{2,\}/\|/g”查找Tab,查找多空格,單獨(dú)一個(gè)空格的除外
awk ‘/3\t/’ 34.txt 查找\t
sed -n ‘/3>/p’ 34.txt 查找空格
sed “/\\t/p” 34.txt 查找tab
echo “\tabc\t23” | sed ‘s/>/-/’ 替換tab
sed -n ‘/>*/p’ 34.txt 查找tab
如何只替換第2個(gè)\t?
(4)
行末空格
sed ‘s/*$//g’
(5)替找空格:
echo “abc 23” | sed ‘s/\{2,\}/ /’ 把多個(gè)空格替換成一個(gè)空格
(3)
如果你想在每行的80個(gè)字符后加一個(gè)冒號(hào),你可寫:
sed ‘s/./&:/80’ new
你也可以以蠻力解決,如下:
sed ‘s/^……………………………………………………………………../&:/’ new
(4)找一個(gè)sed命令在文件每一行加一個(gè)變量的例子:
sed ‘s/.*/&-/’ new.txt
用&作為匹配的串
有時(shí)你想查找一個(gè)模式,然后加上幾個(gè)字符,比如在匹配的串前后加上括號(hào)。如果你是找一個(gè)確定的字符串,還是比較簡單的,如下即可:
sed ‘s/abc/(abc)/’ new
如果你不是非常清楚你將找到的是串是什么,那你應(yīng)該如果來利用你找到的串做某種替換呢?
答案就是你需要一個(gè)特定的字符”&”,它即指代匹配的模式
sed ‘s/*/(&)/’ new
你可以在替換時(shí)多次使用”&”,比如,你可以次每行開頭的數(shù)字復(fù)制一次,如下:
% echo “123 abc” | sed ‘s/*/& &/’
abc
讓我再修正一下這個(gè)例子,sed會(huì)以貪婪的方式匹配之一個(gè)串。對(duì)于’*’的之一個(gè)區(qū)配是之一個(gè)字符,因?yàn)檫@個(gè)正則是匹配0個(gè)或多個(gè)數(shù)字。所以如果輸入是”abc 123”,輸出也不會(huì)改變(當(dāng)然,除了有一個(gè)空格在字母之前)。一個(gè)能保證能匹配一個(gè)數(shù)字的更好的復(fù)制數(shù)字的方法是:
% echo “123 abc” | sed ‘s/*/& &/’
abc
(5)sed 中如何使用變量(變量使用單引號(hào)包起來):
echo “abc” | sed ‘s/ab/’$v’/’
如何在文件的每一行的最前面加一個(gè)字符串和空格!
sed ‘s/^/ttt /g’ test
如何在文件的每一行的最前面加一個(gè)字符串和空格!
sed ‘s/^/ttt /g tese | sed ‘s/$/ sss\&/g’
如何在文件的每一行的最前面加一個(gè)字符串和空格!
sed ‘s/^/ttt /g tese | sed ‘s/$/ sss\&/g’
(7)匹配空行:
查找空行:sed -n “/^$/p” 20.txt
刪除空行:sed “/^$/d” 21.txt
n 不打印; sed不寫編輯行到標(biāo)準(zhǔn)輸出,缺省為打印所有行(編輯和未編輯),p命令可以用來打印編輯行
c 下一命令是編輯命令,使用多項(xiàng)編輯時(shí)加入此選項(xiàng)
f 如果正在調(diào)用sed腳本文件,使用此選項(xiàng),此選項(xiàng)通知sed一個(gè)腳本文件支持所用的sed命令,如
sed -f myscript.sed input_file 這里myscript.sed即為支持sed命令的文件
(21) 只顯示指定行范圍的文件內(nèi)容,例如:
# 只查看文件的第100行到第200行
sed -n ‘100,200p’ mysql_slow_query.log
(22)退出狀態(tài)
sed不向grep一樣,不管是否找到指定的模式,它的退出狀態(tài)都是0。只有當(dāng)命令存在語法錯(cuò)誤時(shí),sed的退出狀態(tài)才不是0。
(23)y命令
該命令與UNIX/Linux中的tr命令類似,字符按照一對(duì)一的方式從左到右進(jìn)行轉(zhuǎn)換。例如,y/abc/ABC/將把所有小寫的a轉(zhuǎn)換成A,小寫的b轉(zhuǎn)換成B,小寫的c轉(zhuǎn)換成C。
sed ‘1,20y/hrwang12/HRWANG^$/’ datafile
#將1到20行內(nèi),所有的小寫hrwang轉(zhuǎn)換成大寫,將1轉(zhuǎn)換成^,將2轉(zhuǎn)換成$。
#正則表達(dá)式元字符對(duì)y命令不起作用。與s命令的分隔符一樣,斜線可以被替換成其它的字符。
(24)% echo “123 abc” | sed ‘s/*/& &/’
abc
字符串”abc”沒有改變,因?yàn)樗鼪]有匹配正則表達(dá)式,如果你想在輸出中刪除”abc”,你必須擴(kuò)展正則表達(dá)式來匹配行的其它的部分,并顯式地用”(”,”)”和”\1”來指名,這就是下節(jié)的內(nèi)容了。
用\1來指明匹配的部分
我已經(jīng)在正則表達(dá)式那一章中介紹了”(” ”)”和”\1”的用法?,F(xiàn)在復(fù)習(xí)一下,被轉(zhuǎn)義的括號(hào)(即,有反斜杠在前面的括號(hào))來記錄正則表達(dá)的某一部分?!盶1”是被記錄的之一個(gè)模式,”\2”是第二個(gè)被記錄的模式。Sed可以記錄9個(gè)模式。
如果你想保存每行的之一個(gè)單詞,并刪除行的其它部分,你可以用下面的命令:
sed ‘s/\(\*).*/\1/’
我應(yīng)該再詳細(xì)地解釋一下。正則表達(dá)式是以貪婪的方式匹配?!?”匹配0個(gè)或多個(gè)小寫字母,它會(huì)盡量匹配更多的小寫字母?!?*”會(huì)在之一個(gè)匹配后匹配0個(gè)或多個(gè)字符。因?yàn)橹粋€(gè)模式已經(jīng)匹配了所有的小寫字母,第二個(gè)模式會(huì)匹配剩下的字符,所以你使用命令:
echo abcd123 | sed ‘s/\(*\).*/\1/’
會(huì)輸出”abcd”,而刪除后面的數(shù)字。
如果你想調(diào)換兩個(gè)單詞的位置,你可記錄兩個(gè)模式,并改變它們的次序。
sed ‘s/\(*\) \(*\)/\2 \1/’
注意兩個(gè)模式中間是有空格的。這個(gè)可保證找到兩個(gè)單詞。但是*這種模式會(huì)匹配0個(gè)字母,如果你想至少匹配一個(gè)字母,你可以用下面的命令:
sed ‘s/\(*\) \(*\)/\2 \1/’
“\1”并不需要一定出現(xiàn)在替換串中(右部),它你也可以在查找的模式中(左部)。如果你想刪除重復(fù)的單詞,你可以用:
sed ‘s/\(*\) \1/\1/’
linux指令 sed指令怎么選擇列
首先我這邊先建一個(gè)字母大小轉(zhuǎn)換的腳本test2.sh,內(nèi)容如下:
先介紹些sed -n的應(yīng)用:
sed命令中p能實(shí)現(xiàn)打印匹配行的功能。我們可以實(shí)際看下sed命令帶-n和不帶-n情況下有什么不同。
sed -n “1p” test2.sh:帶-n選項(xiàng)的話,只打印test2.sh腳本之一行匹配行。
sed “1p” test2.sh:不帶-n的話,不僅打印之一行匹配行,還打印輸出test2.sh腳本的全部內(nèi)容。
sed -n還可以打印文件的范圍,比如打印test2.sh腳本的前兩行,我們就可以執(zhí)行以下命令:sed -n “1,2p” test2.sh,就可以直接打印前兩行。
sed命令可以打印匹配模式行,比如打印test2.sh腳本匹配tr的行,就可以執(zhí)行以下命令:
sed -n /tr/p test2.sh。
remark:如果不帶-n的話,除了打印匹配行外,還會(huì)打印腳本的全部內(nèi)容。
sed -e的應(yīng)用。只有當(dāng)sed命令傳遞多個(gè)編輯命令式,才會(huì)使用到-e。比如:我想打印/tr/匹配行,并且打印匹配行所在的行號(hào),此時(shí)存在多個(gè)sed參數(shù),就要用型亂源到-e了。
sed -n -e /tr/p -e /tr/= test2.sh
每個(gè)參數(shù)前都要帶上-e:
sed a\追加命令,命令格式為:sed ’指定地址a\追加內(nèi)容‘ 目標(biāo)文件
這個(gè)追加內(nèi)容在匹配行的下一行,只會(huì)輸出到標(biāo)準(zhǔn)輸出,原文件內(nèi)容是不變的,例如在test2.sh腳本的/tr/所在的匹配行的下一行添加“#hello”內(nèi)容,可需要執(zhí)行:
sed ‘/tr/a\#hello’ test2.sh
一定不要忘記單引號(hào).
還有一個(gè)sed i\的追加命令,命令格式為:sed ’指定地址i\追加內(nèi)容‘ 目標(biāo)文件,跟a\不同,i\追加是在指定位置的上一行追加命令
sed命令中還有一些特殊的匹配,比如元字符匹配,此時(shí)需要用
轉(zhuǎn)義符
“\”屏蔽其特殊意義。
比如:sed -n ‘/\=/p’test2.sh,則打印輸出tr一行。
$在
正則表達(dá)式
中表示尾行,執(zhí)行sed -n ‘$p’ test2.sh則打印腳本尾行。
!表示取反,可以看以下兩個(gè)例子
sed中可以使用關(guān)鍵字來匹配行,打印我們所需要的陪敬內(nèi)容,比如,我希望打印test2.sh第2,3行,可以執(zhí)行:sed -n “2,” test2.sh,也可以執(zhí)行sed -n “/tr/,/exit/p” test2.sh
sed c\的應(yīng)用,命令格式為:sed ’指定地址c\替換內(nèi)容‘ 目標(biāo)文件。比如,#hello,替換test2.sh腳本的tr這行,可以執(zhí)行命令:sed ‘/tr/c\#hello’ test2.sh
sed刪除d應(yīng)用:比如我想刪除test2.sh的第2行,可以執(zhí)行以下命令:sed “2d” test2.sh或者sed /tr/d test2.sh
sed替換s應(yīng)用:格式 sed s/被替換的字符/替換字符/
比如,我想把test2.sh中tr替換成大寫的tr,則可以執(zhí)行以下命令:sed ‘s/tr/TR/’test2.sh,則把腳本中的tr替換成TR,完后輸出全部內(nèi)容。
如果僅想打印替換所在行,則需要卜態(tài)試用使用-n和-p:sed -n ‘s/tr/TR/p’ test2.sh:把腳本中的tr替換成TR,然后打印tr所在的行.
如果腳本中存在好幾個(gè)tr,并且每一行也存在多個(gè)tr,如果執(zhí)行以上命令的話,只會(huì)更改每一行的之一個(gè)出現(xiàn)的tr,如果要全部把tr轉(zhuǎn)后為TR,則需要添加G參數(shù):
sed -n ’S/tr/TR/pg’test2.sh。
w參數(shù)是定向輸入?yún)?shù),比如要把上述的變更定向輸出到test1.txt中,則需要執(zhí)行:
sed -n ’s/tr/TR/pgw test1.txt’ test2.sh。
也可以直接把選定的匹配內(nèi)容寫到另一個(gè)文本中,比如想把test2.sh中tr這一樣寫到test2.txt中,執(zhí)行:sed -n ’/tr/w test2.txt‘ test2.sh
sed 編返純輯器是 Linux 系統(tǒng)管理員的工具包中最有用的資產(chǎn)之一
Linux 操作系統(tǒng)更大的一個(gè)好處是它帶有各種各樣的實(shí)用工具。存在如此之多不同的實(shí)用工具,幾乎不可能知道并了解所有這些工具。可以簡化關(guān)鍵情況下操作的一個(gè)實(shí)用 工具是 sed。它是任何管理員的工具包中最強(qiáng)大的工具之一,并且可以證明它自己在關(guān)鍵情況下非常有價(jià)值。
關(guān)于linux 常用sed指令的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站題目:學(xué)習(xí)Linux必備:30個(gè)常用sed指令(linux常用sed指令)
網(wǎng)站路徑:http://fisionsoft.com.cn/article/dpopcjp.html


咨詢
建站咨詢
