sed命令及vim的末行命令

2021-09-20 20:46:01 字數 2401 閱讀 9948

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