sed
在sed處理文字時,將正在處理的當前行儲存到臨時的緩衝區中,稱為「模式空間」;用當前行去匹配給定的pattern,如果能匹配,則使用command編輯處理;如果不匹配,則預設輸出至標準輸出;然後繼續處理下一行,直到檔案的末尾。
預設情況下,sed的所有處理行為不會影響原始檔的內容;
我們一般會使用sed命令來自動編輯乙個或多個檔案,簡化對檔案的迴圈操作;
sed命令:
sed - stream editor for filtering andtransforming text
sed [option]... 'script' [input-file]...
常用選項:
-n, --quiet, --silent
:對於不能匹配模式的行,預設不輸出到螢幕;
-e script, --expression=script
-f script-file, --file=script-file
:從指定的script-file中讀取指令碼
-i[suffix], --in-place[=suffix]
-r, --regexp-extended
:使sed支援擴充套件正規表示式;
script:
'addressescommand'
addresses(
1.2.
num:表示行號;
/pattern/
:能夠匹配該模式的所有行; $
:表示文件最後一行
3.addr1,addr2
:從addr1開始到addr2結束的中間所有行;
例如:2,8
first~step
:從first標記的行號開始,以step所代表的數字為步長;
例如::1~2為奇數行 2~2為偶數行
addr1,+n
:從addr1開始,包括addr1所在行,並繼續向後計算n行;
例如:2,+7匹配到的行數為23456789一共八行,相當於2,2+7
addr1,~n
:從addr1開始,包括addr1所在行,向後計算addr1*n行;
例如:2,~5相當於2,2*5
/pattern1/,/pattern2/
:從被pattern1匹配的第一行開始計算,一直到被/pattern2/匹配到的第一行結束;
command(
處理命令): =
:顯示被模式匹配的行的行號
例如:sed -n'/^$/=' /etc/grub2.cfg
a\text
:在被模式匹配的行的後面追加text的內容,支援使用\n換行,從而實現多行追加;
i \text
:在被模式匹配的行的前面插入text的內容,支援使用\n換行,從而實現多行插入;
c \text
:將被模式匹配的行的修改為text的內容,支援使用\n換行,從而實現一行變多行; d
:在模式空間中刪除被模式匹配的行;這樣的行不能再進行標準輸出;
注意:在使用d命令的時候,不宜使用-n選項; p
:顯示模式空間中被模式匹配的行;
注意:在使用p命令的時候,通常會搭配-n選項;
w filepath
:將模式空間中被模式匹配的行,另存到filepat**件中;
r filepath
:將filepat**件的內容追加至模式空間中被模式匹配的行之後;
!command
:在模式空間中被模式匹配的行,不執行command命令;相反,未被模式匹配的行,參會執行command命令
s///
:查詢替換,分隔符可以任意更換,只要相同即可;
s@@@, s###, s,,,
s/pattern/text/[control]
s@/etc/fstab@/etc/mtab@
pattern
:計畫查詢並替換的內容
text
:要替換的結果
control
:如何進行替換 g
:行內全部替換 p
:顯示替換成功的行
w filepath
:將替換成功的行另存到filepat**件中;
支援後向引用:
s/\(string\)/&/
s/\(string\)/\1/
h: 把模式空間中的內容覆蓋至保持空間中 h
:把模式空間中的內容追加至保持空間中
g: 從保持空間取出資料覆蓋至模式空間 g
:從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行覆蓋至模式空間 n
d: 刪除模式空間中的行 d
:刪除多行模式空間中的所有行
sed原理及sed命令格式
4.1 sed工作原理 sed是乙個非互動式的流編輯器。所謂非互動式,是指使用sed只能在命令列下輸入編輯命令來編輯文字,然後在螢幕上檢視輸出 而所謂流編輯器,是指sed每次只從檔案 或輸入 讀入一行,然後對該行進行指定的處理,並將結果輸出到螢幕 除非取消了螢幕輸出又沒有顯式地使用列印命令 接著讀入...
sed相關命令及操作
sed i s g name.txt 替換每一行中的 為空格 sed i s mv g name.txt 在行首追加mv sed s tail g test.file 行尾追加 sed i 2s pei name.txt 替換一行 行首 行尾 sed裡面雙引號和單引號的區別,如果是單引號,不能引用變...
Vim編輯器的基本使用(二)末行模式中的命令
進入末行模式 按鍵 英文冒號 退出末行模式 ese 把 刪除了 進入編輯模式 按鍵 ese 儲存操作 w write 儲存檔案 另存為 w 路徑 退出操作 quit q 儲存並且退出 wq 強制操作 q 強制退出,不儲存 呼叫外部命令 外部命令 例如 ls 取消高亮顯示 nohl 顯示行號 set ...