替換文字中的字串:
sed 's/book/books/' file-n選項和p命令一起使用表示只列印那些發生替換的行:
sed -n 's/test/test/p' file
sed -i 's/book/books/g' file使用字尾 /g 標記會替換每一行中的所有匹配:
sed 's/book/books/g' file當需要從第n處匹配開始替換時,可以使用 /ng:
echo sksksksksksk | sed 's/sk/sk/2g'以上命令中字元 / 在sed中作為定界符使用,也可以使用任意的定界符:sksksksksksk
echo sksksksksksk | sed 's/sk/sk/3g'
sksksksksksk
echo sksksksksksk | sed 's/sk/sk/4g'
sksksksksksk
sed 's:test:text:g'定界符出現在樣式內部時,需要進行轉義:sed 's|test|text|g'
sed 's/\/bin/\/usr\/local\/bin/g'刪除空白行:
sed '/^$/d' file刪除檔案的第2行:
sed '2d' file刪除檔案的第2行到末尾所有行:
sed '2,$d' file刪除檔案最後一行:
sed '$d' file刪除檔案中所有開頭是test的行:
sed '/^test/'d file正規表示式 \w\+ 匹配每乙個單詞,使用 [&] 替換它,& 對應於之前所匹配到的單詞:
echo this is a test line | sed 's/\w\+/[&]/g'所有以192.168.0.1開頭的行都會被替換成它自已加localhost:[this] [is] [a] [test] [line]
sed 's/^192.168.0.1/&localhost/' file匹配給定樣式的其中一部分:192.168.0.1localhost
echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'命令中 digit 7,被替換成了 7。樣式匹配到的子串是 7,\(..\) 用於匹配子串,對於匹配到的第乙個子串就標記為\1,依此類推匹配到的第二個結果就是\2,例如:this is 7 in a number
echo aaa bbb | sed 's/\([a-z]\+\) \([a-z]\+\)/\2 \1/'love被標記為1,所有loveable會被替換成lovers,並列印出來:bbb aaa
sed -n 's/\(love\)able/\1rs/p' file
sed '表示式' | sed '表示式'sed表示式可以使用單引號來引用,但是如果表示式內部包含變數字串,就需要使用雙引號。等價於:
sed '表示式; 表示式'
test=hello所有在模板test和check所確定的範圍內的行都被列印:echo hello world | sed "s/$test/hello"
hello world
sed -n '/test/,/check/p' file列印從第5行開始到第乙個包含以test開始的行之間的所有行:
sed -n '5,/^test/p' file對於模板test和west之間的行,每行的末尾用字串aaa bbb替換:
sed '/test/,/west/s/$/aaa bbb/' file-e選項允許在同一行裡執行多條命令:
sed -e '1,5d' -e 's/test/check/' file上面sed表示式的第一條命令刪除1至5行,第二條命令用check替換test。命令的執行順序對結果有影響。如果兩個命令都是替換命令,那麼第乙個替換命令將影響第二個替換命令的結果。
和 -e 等價的命令是 --expression:
sed --expression='s/test/check/' --expression='/love/d' filefile裡的內容被讀進來,顯示在與test匹配的行後面,如果匹配多行,則file的內容將顯示在所有匹配行的下面:
sed '/test/r file' filename在example中所有包含test的行都被寫入file裡:
sed -n '/test/w file' example將 this is a test line 追加到 以test 開頭的行後面:
sed '/^test/a\this is a test line' file在 test.conf 檔案第2行之後插入 this is a test line:
sed -i '2a\this is a test line' test.conf將 this is a test line 追加到以test開頭的行前面:
sed '/^test/i\this is a test line' file在test.conf檔案第5行之前插入this is a test line:
sed -i '5i\this is a test line' test.conf
sed '/test/' file把1~10行內所有abcde轉變為大寫,注意,正規表示式元字元不能使用這個命令:
sed '1,10y/abcde/abcde/' file列印完第10行後,退出sed
sed '10q' file在sed處理檔案的時候,每一行都被儲存在乙個叫模式空間的臨時緩衝區中,除非行被刪除或者輸出被取消,否則所有被處理的行都將 列印在螢幕上。接著模式空間被清空,並存入新的一行等待處理。
sed -e '/test/h' -e '$g' file在這個例子裡,匹配test的行被找到後,將存入模式空間,h命令將其複製並存入乙個稱為保持快取區的特殊緩衝區內。第二條語句的意思是,當到達最後一行後,g命令取出保持緩衝區的行,然後把它放回模式空間中,且追加到現在已經存在於模式空間中的行的末尾。在這個例子中就是追加到最後一行。簡單來說,任何包含test的行都被複製並追加到該檔案的末尾。
互換模式空間和保持緩衝區的內容。也就是把包含test與check的行互換:
sed -e '/test/h' -e '/check/x' filesed指令碼是乙個sed的命令清單,啟動sed時以-f選項引導指令碼檔名。sed對於指令碼中輸入的命令非常挑剔,在命令的末尾不能有任何空白或文字,如果在一行中有多個命令,要用分號分隔。以#開頭的行為注釋行,且不能跨行。
sed [options] -f scriptfile file(s)方法1:
sed -n 'p;n' test.txt #奇數行方法2:sed -n 'n;p' test.txt #偶數行
sed -n '1~2p' test.txt #奇數行sed -n '2~2p' test.txt #偶數行
grep -a 1 scc urfilesed -n '/scc/' urfile
awk '/scc/' urfile
shell指令碼 sed的用法
sed在處理文字時是逐行讀取檔案內容,讀到匹配的行就根據指令做操作,不匹配就跳過。sed是linux下一款功能強大的非互動流式文字編輯器,可以對文字檔案進行增 刪 改 查等操作,支援按行 按欄位 按正則匹配文字內容,靈活方便,特別適合於大檔案的編輯。詳細用法參考 shell指令碼 sed的用法 se...
sed用法例項 (內容不全)
sed用法例項 1.替換命令 s 不改變原來檔案 sed s book bookall mysed sed n s book bookall mysed n 單獨使用不會輸出任何內容 sed s book bookall p mysed p 單獨使用,就是預設輸出 sed n s book book...
Shell指令碼的學習 sed
sed是流編輯器,對文字進行批量化處理。sed option script file1 file2 sed option f scriptfile file1 file2 sed 處理的檔案既可以由標準輸入重定向得到,也可以當命令列引數傳入,命令列引數可以一次傳入多個檔案,sed會依次處理。sed的...