您好,登錄后才能下訂單哦!
sed簡介:
sed是一個強大而簡單的文本解析轉換工具,可以讀取文本,并根據指定的條件對文本內容進行編輯(刪除、替換、添加、移動等),最后輸出所有行或者僅輸出處理的某些行。sed 也可以在無交互的情況下實現相當復雜的文本處理操作,被廣泛應用于 Shell 腳本中,用以完成各種自動化處理任務。
sed工作流程:
讀取:sed 從輸入流(文件、管道、標準輸入)中讀取一行內容并存儲到臨時的緩沖區中(又稱模式空間,pattern space)。
執行:默認情況下,所有的 sed 命令都在模式空間中順序地執行,除非指定了行的地址,否則 sed 命令將會在所有的行上依次行。
顯示:發送修改后的內容到輸出流。再發送數據后,模式空間將會被清空。
sed命令格式:
sed [選項] '操作' 參數
常見的 sed 命令選項:
-e 或--expression=:表示用指定命令或者腳本來處理輸入的文本文件。
-f 或--file=:表示用指定的腳本文件來處理輸入的文本文件。
-h 或--help:顯示幫助。
-n、--quiet 或 silent:表示僅顯示處理后的結果。
-i:直接編輯文本文件。
常見的操作:
a:增加,在當前行下面增加一行指定內容。
c:替換,將選定行替換為指定內容。
d:刪除,刪除選定的行。
i:插入,在選定行上面插入一行指定內容。
p:打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項一起使用。
s:替換,替換指定字符。
y:字符轉換。
1)、輸出符合條件的文本(p )
sed -n 'p' test1.txt //輸出所有內容,等同于 cat test1.txt
sed -n '3,5p' test1.txt //輸出 3~5 行
sed -n 'p;n' test1.txt //輸出所有奇數行,n 表示讀入下一行資料
sed -n 'n;p' test1.txt //輸出所有偶數行,n 表示讀入下一行資料
sed -n '1,5{n;p}' test1.txt //輸出第 1~5 行之間的偶數行(第 2/4/6 行)
sed -n '/the/p' test.txt //輸出包含the 的行
sed -n '4,/the/p' test.txt //輸出從第 4 行至第一個包含 the 的行
sed -n '/the/=' test.txt //輸出包含the 的行所在的行號,等號(=)用來輸出行號
sed -n '/\<wood\>/p' test.txt //輸出包含單詞wood 的行,\<、\>代表單詞邊界
2)、刪除符合條件的文本(d)
nl test1.txt | sed '3,5d' //刪除第 3~5 行
nl test.txt |sed '/cross/d' //刪除包含cross 的行
sed '/^[a-z]/d' test.txt //刪除以小寫字母開頭的行
sed '/.$/d' test.txt //刪除以"."結尾的行
3)替換符合條件的文本
sed 's/the/THE/' test1.txt //將每行中的第一個the 替換為 THE
sed 's/l/L/2' test1.txt //將每行中的第 2 個l 替換為L
sed 's/the/THE/g' test1.txt //將文件中的所有the 替換為THE
sed 's/^/#/' test1.txt //在每行行首插入#號
sed '/the/s/^/?/' test1.txt //在包含the 的每行行首插入?號
sed 's/$/EOF/' test1.txt //在每行行尾插入字符串EOF
4)遷移符合條件的文本
sed '/the/{H;d};$G' test1.txt //將包含the 的行遷移至文件末尾
sed '1,5{H;d};13G' test1.txt //將第 1~5 行內容轉移至第13行后
sed '3aNew' test1.txt //在第 3 行后插入一個新行,內容為 New
sed '/the/aNew' test1.txt //在包含the 的每行后插入一個新行,內容為 New
sed '3aNew1\nNew2' test1.txt //在第 3 行后插入多行內容,中間的\n 表示換行
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。