原文:
1.定位行
sed命令用來處理文字,在處理前首先要找得到待處理的行,這是邏輯上必須的。所以需要首先定位,然後對定位到的各行進行各種處理,包括插入,刪除,替換等。
sed -n
'10p' testfile // sed命令缺省會列印出經過處理後所有的文字,-n選項則不列印這種預設文字。10為要定位的行,找到之後執行p命令,列印這一行。
sed -n
'1,10p' testfile // 列印1-10行。
sed -n
'2,$p' testfile // 列印第二行到最後一行。
sed -n
'3~2p' testfile // 列印第3,5,7,9,…….行,你懂得。
sed -n
'/barry/,10p' testfile // 首先找到第乙個匹配/barry/(可以是其他基本正規表示式)的行,列印從這一行到第10行。
sed -n
'1,3!p' testfile // 列印1-3行以外的行("!"的作用)。
sed -n
'1' testfile // 首先定位到第一行,然後執行命令n,定位到第一行的下一行,然後執行p列印,可見定位之後可以用 {}執行命令組合。
sed -n
'p' testfile // 什麼都不寫,則定位全部的行。
採用a,b這種模式定位時,首先定位a(如果超出範圍或者未找到,就不會去查詢b),然後定位b,如果b這一行在a的上面會出現什麼狀況呢?例如:
sed -n
'/barry/,/hello/p' testfile
該首先會定位到/barry/,如果/hello/這一行在/barry/這一行上面,則只列印/barry/這一行。為什麼會這樣?原來,sed定位是不回退的,即找到了/barry/這一行之後,就從這一行下面找/hello/,當然找不到了,所以只列印了/barry/這一行。
2.命令
在定位之後當然是執行指定的命令了。看例項:
sed '1,3d' testfile // 刪除1-3行,列印剩餘的文字,注意,此時檔案本身並沒有改變。d命令是刪除命令。
sed -n
'5,10a helloworld' testfile // 在5-10行每一行後面都增加一行 helloworld。a命令在行後插入一行。
sed -n
'5,10i helloworld' testfile // 在5-10行每一行前面都增加一行 helloworld。i命令在行前插入一行。
sed -n 『5~3c helloworld』 testfile //把5,8,11,14,17,20,23,26……依次替換為helloworld。c命令替換行。
sed -n
'5,10c helloworld' testfile // 把5-10行整體替換成一行helloworld。當替換目標是連續的行時,把整體替換成一行。
sed -n
-r'5,10s/yes|yes/no/gp' testfile // 5-10行的yes或者yes被替換成no。 -r 選項使sed支援擴充套件正規表示式。
s命令是替換命令,通常格式是line1,line2s/字串1
/字串2/g,即把line1~line2的字串1全部用字串2代替,字串1可以是正規表示式。這裡不再對正規表示式詳細介紹。如果末尾不加g字元,則表示只替換每行的第乙個匹配的字串。
sed '1,10s/$/helloworld/' testfile // 在1~10行中,替換每行的行尾設定為helloworld。$是正規表示式的行尾標誌。
sed '5,10y/abc/abc/' testfile // 5-10行的a被換成a,b被換成b,c被換成c,類似tr命令的功能。y命令替換以字元為單位,而s命令以字串為單位。
sed '/my/r textfile' testfile // r命令是讀命令,sed使用該命令將乙個文字檔案中的內容加到當前行的下面。
sed -n
'1,10w newfile' testfile // 將1-10行寫入newfile。w命令可以將指定的行寫入指定的檔案。
sed -n
'/root/' testfile // 定位到/root/行之後,列印行號,然後列印這一行。"="是列印行號的命令。
3.特殊選項
sed -i
'1,10d' testfile // 直接在檔案中刪除1~10行。-i選項表示對真實檔案進行操作,所做的更改將儲存到檔案中。
sed -s
'1d' testfile1 testfile2 testfile3 // 此處有三個檔案,如果不加-s,則將三個檔案讀入,當作乙個整體處理,-s選項使分別處理。
sed -e
'/root/p'
-e'/barry/d' testfile // 此處用-e選項可以進行多次處理,第一次列印/root/行,第二次刪除/barry/行。
sed -e
'/root/'
-e'/barry/' testfile // 每次處理時,可以對每次匹配到的行執行多個命令。命令之間用";"分隔。
linux sed命令詳解
1.sed簡介 3.sed命令 呼叫sed命令有兩種形式 sed options command file s sed options f scriptfile file s a 在當前行後面加入一行文字。b lable 分支到指令碼中帶有標記的地方,如果分支不存在則分支到指令碼的末尾。c 用新的文...
linux sed命令詳解
3.sed命令 呼叫sed命令有兩種形式 sed options command file s sed options f scriptfile file s a 在當前行後面加入一行文字。b lable 分支到指令碼中帶有標記的地方,如果分支不存在則分支到指令碼的末尾。c 用新的文字改變本行的文字...
linux sed命令詳解
1.sed簡介 1.sed簡介 2.定址 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1,3表示 1,2,3行,美元符號 表示最後一行。範圍可以通過資料,正規表示式或者二者結合的方式確定 3.sed命令 呼叫sed命...