linuxsed
命令例項詳解
功能說明:利用
script
來處理文字檔案。
語 法:
sed[-hnv][-e][-f檔案
>][
文字檔案
]補充說明:
sed可依照
script
參 數:
-e或—
expression=
以選項中指定的
script
來處理輸入的文字檔案。
-f檔案
>
或—file=檔案
>
以選項中指定的
script
檔案來處理輸入的文字檔案。
-h或—
help
顯示幫助。
-n或—
quiet
或--silent
僅顯示script
處理後的結果。
-v或—
version
顯示版本資訊。
#sed -e 's/123/1234/' a.txt
將a.txt
檔案中所有行中的
123用
1234
替換(-e
表示命令以命令列的方式執行;引數
s,表示執行替換操作)
#sed -e '3,5 a4' a.txt
將a.txt
檔案中的3行到
5行之間所有行的後面新增一行內容為
4的行(引數
a,表示新增行,引數
a後面指定新增的內容)
#sed -e '1 s/12/45/' a.txt
把第一行的
12替換成
45sed-i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
批量處理通過
grep
搜尋出來的所有文件,將這些文件中所有的
oldstring
用newstring
替換(-i
引數表示直接對目標檔案操作)
$sed -n 's/^test/mytest/p' example.file
(-n)
選項和p
標誌一起使用表示只列印那些發生替換的行。也就是說,如果某一行開頭的
test
被替換成
mytest
,就列印它。
(^這是正規表示式中表示開頭,該符號後面跟的就是開頭的字串
)(引數
p表示列印行)
$sed 's/^wangpan/&19850715/' example.file
表示被替換換字串被找到後,被替換的字串通過&符號連線給出的字串組成新字元傳替換被替換的字串
,所有以
wangpan
開頭的行都會被替換成它自已加
19850715
,變成wangpan19850715
$sed -n 's/\(love\)able/\1rs/p' example.file
love
被標記為
1,所有
loveable
會被替換成
lovers
,而且替換的行會被列印出來。需要將這條命令分解,
s/是表示替換操作,
\(love\)
表示選中
love
字串,
\(love\)able/
表示包含
loveable
的行,\(love\)able/\l
表示love
字串標記為
1,表示在替換過程中不變。
rs/表示替換的目標字串。這條命令的操作含義:只列印替換了的行
$sed 's#10#100#g' example.file
不論什麼字元,緊跟著
s命令的都被認為是新的分隔符,所以,「
#」在這裡是分隔符,代替了預設的「
/」分隔符。表示把所有
10替換成
100。
$sed -n '/love/,/unlove/p' example.file
只列印包含
love
字串行到包含
unlove
字串行之間的所有行(確定行的範圍就是通過逗號實現的)
$sed -n '5,/^wang/p' example
只列印從第五行開始到第乙個包含以
wang
開始的行之間的所有行
$sed '/love/,/unlove/s/$/wangpan/' example.file
對於包含
love
字串的行到包含
unlove
字串之間的行,每行的末尾用字串
wangpan
替換。字串
$/表示以字串結尾的行,
$/表示每一行的結尾,
s/$/wangpan/
表示每一行的結尾新增
wangpan
字串$sed -e '11,53d' -e 's/wang/pan/' example.file
(-e)
選項允許在同一行裡執行多條命令。如例子所示,第一條命令刪除11至
53行,第二條命令用
pan替換
wang
。命令的執行順序對結果有影響。如果兩個命令都是替換命令,那麼第乙個替換命令將影響第二個替換命令的結果。(引數
d,表示刪除指定的行
)$sed --expression='s/wang/pan/' --expression='/love/d' example.file
乙個比-e
更好的命令是
--expression
。它能給
sed表示式賦值。
$sed '/wangpan/r file' example.file
file
裡的內容被讀進來,顯示在與
wangpan
匹配的行後面,如果匹配多行,則
file
的內容將顯示在所有匹配行的下面。引數
r,表示讀出檔案,後面空格緊跟檔名稱
$sed -n '/test/w file' example.file
在example.file
中所有包含
test
的行都被寫入
file
裡。引數
w,表示將匹配的行寫入到指定的檔案
file
中$sed '/^test/a\oh! my god!' example.file
'oh!my god!'
被追加到以
test
開頭的行的後面,
sed要求引數
a後面有乙個反斜槓。
$sed '/test/i\oh! my god!' example.file
'oh!my god!'
被追加到包含
test
字串行的前面,引數
i表示新增指定內容到匹配行的前面,
sed要求引數
i後面有乙個反斜槓
$sed '/test/' example.file
如果test
被匹配,則移動到匹配行的下一行,替換這一行的
aa,變為
bb。引數
n,表示讀取匹配行的下乙個輸入行,用下乙個命令處理新的行而不是匹配行。
sed要求引數
n後跟分號
$sed '1,10y/abcde/abcde/' example.file
把1—10
行內所有
abcde
轉變為大寫,注意,正規表示式元字元不能使用這個命令。引數
y,表示把乙個字元翻譯為另外的字元(但是不用於正規表示式)
$sed -i 's/now/right now/g' test_sed_command.txt
表示直接操作檔案
test_sed_command.txt
,將檔案
test_sed_command.txt
中所有的
now用
rightnow
替換。引數
-i,表示直接操作修改檔案,不輸出。
$sed '2q' test_sed_command.txt
在列印完第
2行後,就直接退出
sed。引數
q,表示退出
$sed -e '/old/h' -e '/girl-friend/g' test_sed_command.txt
首先了解引數
h,拷貝匹配成功行的內容到記憶體中的緩衝區。在了解引數
g,獲得記憶體緩衝區的內容,並追加到當前模板塊文字的後面。上面命令列的含義:將包含
old字串的行的內容儲存在緩衝區中,然後將緩衝區的內容拿出來新增到包含
girl-friend
字串行的後面。隱含要求蒐集到緩衝區的匹配行在需要新增行的前面。
$sed -e '/test/h' -e '/wangpan/x' example.file
將包含test
字串的行的內容儲存在緩衝區中,然後再將緩衝區的內容替換包含
wangpan
字串的行。引數
x,表示行替換操作。隱含要求蒐集到緩衝區的匹配行在需要被替換行的前面。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
來自:
Linux sed命令例項詳解
功能說明 利用script來處理文字檔案。語 法 sed hnv e f 補充說明 參 數 e或 expression 以選項中指定的script來處理輸入的文字檔案。f檔案 或 file h或 help 顯示幫助。n或 quiet或 silent 僅顯示script處理後的結果。v或 versio...
Linux sed命令例項詳解
功能說明 利用script來處理文字檔案。語 法 sed hnv e f 補充說明 參 數 e或 expression 以選項中指定的script來處理輸入的文字檔案。f檔案 或 file h或 help 顯示幫助。n或 quiet或 silent 僅顯示script處理後的結果。v或 versio...
Linux sed命令例項詳解
功能說明 利用script來處理文字檔案。參 數 e或 expression 以選項中指定的script來處理輸入的文字檔案。f h或 help 顯示幫助。n或 quiet或 silent 僅顯示script處理後的結果。v或 version 顯示版本資訊。sed e s 123 1234 a.tx...