在linux環境下,sed是一種非常常用的非互動式的流編輯器。流編輯器就是針對輸入流進行編輯,輸出到輸出流。
首先需要明確兩點:
sed認不改變輸入流
sed基本處理單位是行
具體的流程為:
sed從輸入流中讀取一行,放到pattern space這個快取區,執行相應的命令,執行完命令,放入hold space中,作為輸出流,輸出到目錄,或者重定向到檔案,開始讀取下一行。
sed 【動作修飾】【動作】
動作修飾用來指定後面所有執行的動作的一些行為模式,如下:
動作模式通常為:位置符號動作,如下# -n: 安靜模式,只有真正執行動作的目標行才會被輸出;相對的,非安靜模式,所有輸入都會輸出
[wlin@wlin sed]$ for i in ; do echo line:$i >> 1.txt; done
[wlin@wlin sed]$ vi 1.txt
[wlin@wlin sed]$ sed -n '1p' 1.txt
line:1
# -e: 直接指定命令,可以同時指定多個sed命令,而命令們順序執行
[wlin@wlin sed]$ cat 1.txt | sed -e 's/line/line/' -e '/line:1$/a helloworld'
line:1
helloworld
line:2
line:3
line:4
line:5
line:6
line:7
line:8
line:9
line:10
# -f: 指定將命令寫到乙個檔案內或者執行檔案內的sed命令
[wlin@wlin sed]$ cat test.sed
#!/bin/sed -f
1p2,3s/line/line/g
[wlin@wlin sed]$ cat 1.txt | sed -f test.sed
line:1
line:1
line:2
line:3
line:4
line:5
line:6
line:7
line:8
line:9
line:10
# -r: 延伸型正規表示式
# 略# -i: 直接修改讀取的檔案內容,而不輸入到終端
[wlin@wlin sed]$ sed -i "s/line/line/g" 1.txt
[wlin@wlin sed]$ cat 1.txt
line:1
line:2
line:3
line:4
line:5
line:6
line:7
line:8
line:9
line:10
至於其他的高階用法,可參考:#[1,2p][a c d i p s]
[wlin@wlin sed]$ cat 1.txt | sed '1a test'
line:1
test
line:2
line:3
line:4
line:5
line:6
line:7
line:8
line:9
line:10
[wlin@wlin sed]$ cat 1.txt | sed '2,4c test'
line:1
test
line:5
line:6
line:7
line:8
line:9
line:10
[wlin@wlin sed]$ cat 1.txt | sed '2,4d'
line:1
line:5
line:6
line:7
line:8
line:9
line:10
[wlin@wlin sed]$ cat 1.txt | sed '2i helloworld'
line:1
helloworld
line:2
line:3
line:4
line:5
line:6
line:7
line:8
line:9
line:10
[wlin@wlin sed]$ cat 1.txt | sed -n '2p'
line:2
[wlin@wlin sed]$ cat 1.txt | sed '2,3s/line/line/g'
line:1
line:2
line:3
line:4
line:5
line:6
line:7
line:8
line:9
line:10
sed常見用法(一)
test.txt 內容 abcefg asdf abcd bfabc 1.在內容為abc的前一行插入123 sed e abc i 123 test.txt 修改後內容 123abc efgasdf abcd bfabc 2.將含有abc字串的行替換為123 sed e abc c 123 test...
sed常見用法總結
編輯文字 sed i 1i xyz test.txt 在第一行之前 sed i 1a xyz test.txt 在第一行之後插入 sed i 1c xyz test.txt 把第一行資料替換成xyz sed bb i kjdlfkjdslkf temp.txt 在匹配的行之前加入新一行 sed bb...
sed 指令替換用法
先看乙個使用sed 替換的指令碼 bin bash 特殊符號解析 將json中特殊符號替換為空格,刪除,或者 符號,或者新增換行符 sed s g i source json.txt sed s g i source json.txt sed s g i source json.txt sed s ...