linux sed學習總結

2021-07-15 05:06:44 字數 3609 閱讀 1575

sed 基本用法

最終列印:列印出模式空間中的經過處理後剩下的文字;

#man sed

sed [option] 'addresscommand' file...

-n:靜默模式,只顯示符合條件的行;

-i:直接修改原始檔;會修改到原檔案,注意;

-e script -e script:同時執行多個指令碼;

-f /path/to/scriptfile:執行這個檔案中的指令碼語句;

sef -f /path/to/scripts file;

address:位址行;command:命令

sed 'addresscommand ' file ...

1、startline,endline;比如:1,100;從第一行到100行;

2、/regexp/:使用正規表示式來指定模式;

/^root/:找出所有行中以root開頭的行;

3、/pattern1/,/pattern2/:表示第一次被模式一匹配到的行開始到第一次被pattern2匹配到的行結束,中間的所有行;

4、linenumber:精確的某一行,指定的行;

$:表示最後一行;

5、startline, +n;從startline開始,向後n行,總共n+1行;

command:命令

d:刪除符合條件的行;

eg:[root@iz233y80y23z ~]# sed "1,2d" /etc/fstab //刪除/etc/fstab檔案中的1,2行;

#刪除從第三行到最後一行

[root@iz233y80y23z ~]# sed '3,$d' /etc/fstab

#所有包含vdb的行都刪除

[root@iz233y80y23z ~]# sed '/vdb/d' /etc/fstab

p:顯示符合條件的行:sed顯示的模式空間中處理後的行;配合-n使用不然會有問題,會列印兩次符合條件的行;

eg:#顯示這種檔案中以斜線開頭的行

[root@iz233y80y23z ~]# sed '/^\//d' /etc/fstab

[root@iz233y80y23z ~]# sed -n '/^\//p' /etc/fstab

/dev/vdb /home ext3 defaults 0 0

/dev/vdb /data ext3 defaults 0 0

/dev/vdb /data ext3 defaults 0 0

a \"string":在指定的行後面追加新行,內容為string;\n:換行

eg:#在符合/開頭的行中後面追加新行

[root@iz233y80y23z ~]# sed -n '/^\//p' /etc/fstab | sed "a \#hello\nworld"

/dev/vdb /home ext3 defaults 0 0

#hello

world

/dev/vdb /data ext3 defaults 0 0

#hello

world

/dev/vdb /data ext3 defaults 0 0

#hello

world

i \string:在 符合條件的行前面新增新行,內容為string;

r file:將指定的檔案的內容新增到符合條件處;

eg:#將指定的檔案/etc/issue新增到/etc/fstab中的第二行,插入;檔案合併顯示;

[root@iz233y80y23z ~]# cat /etc/issue

\skernel \r on an \m

[root@iz233y80y23z ~]# sed "2r /etc/issue" /etc/fstab #\s

kernel \r on an \m

# /etc/fstab

# created by anaconda on fri nov 21 18:16:53 2014

## accessible filesystems, by reference, are maintained under '/dev/disk'

# see man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#uuid=6634633e-001d-43ba-8fab-202f1df93339 / ext4 defaults,barrier=0 1 1

/dev/vdb /home ext3 defaults 0 0

/dev/vdb /data ext3 defaults 0 0

/dev/vdb /data ext3 defaults 0 0

w file:將指定範圍內的內容另存到指定的檔案中;

eg:#將/etc/fstab中所有以/開頭的行插入到檔案data/test/fstab.txt中;

[root@iz233y80y23z ~]# sed '/^\//w /data/test/fstab.txt' /etc/fstab

s/pattern/string/:查詢並替換,預設每行中第一次被模式匹配的字串;switch;

s###,s@@@分隔符只要三個一樣就可以;

加上修飾符

g:全域性替換

i:忽略字元大小寫

eg:#把字串中的/轉化為#

[root@iz233y80y23z ~]# sed 's/\//#/g' /etc/fstab

## #etc#fstab

# created by anaconda on fri nov 21 18:16:53 2014

## accessible filesystems, by reference, are maintained under '#dev#disk'

# see man pages fstab(5), findfs(8), mount(8) and#or blkid(8) for more info

#uuid=6634633e-001d-43ba-8fab-202f1df93339 # ext4 defaults,barrier=0 1 1

#dev#vdb #home ext3 defaults 0 0

#dev#vdb #data ext3 defaults 0 0

#dev#vdb #data ext3 defaults 0 0

後向引用:\(\),\1,\2;

&:引用模式匹配的整個串;

eg:#將檔案中的sed.txt中的l..e模式匹配下改為l..er;\(\)後向引用\1

[root@iz233y80y23z ~]# sed 's#l..e#&r#g' sed.txt

hello, liker

hi, my lover

[root@iz233y80y23z ~]# sed 's#\(l..e\)#\1r#g' sed.txt

hello, liker

hi, my lover

#history替換行首中的空格去掉;並顯示第一行;

[root@iz233y80y23z ~]# history | sed 's#^[[:space:]]*##g' | cut -d' ' -f1

Linux sed命令學習

文章摘抄至 sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法...

Linux Sed 指令學習

sed stream editor 文字編輯器 你就把他想成是平常用的notepad 或者你熟悉的編輯器就ok 用法 sed 選項 命令 檔案選項 n 靜默模式,只顯示匹配處理的行 否則會輸出所有 i 真修改,不加 i的修改都是輸出修改 r 支援複雜正規表示式 f 指定命令檔案,比如命令很複雜,就直...

Linux Sed 命令的總結

sed是一種流編編器,它是文字處理中非常中的工具,能夠完美的配合正規表示式便用,功物能不同凡響。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 oattern space 接看用sed命令處理緩衝區中的內容,處理成後,把緩衝區的內容送往螢幕顯示。接著理下一行,這樣不斷重複,直到檔案末。檔案...