sed指令講解和常見用法

2021-09-23 23:50:05 字數 2510 閱讀 9353

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