Linuxsed命令例項詳解

2021-06-05 19:04:25 字數 4721 閱讀 7585

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...