Linux文字處理三劍客之sed

2021-09-25 22:04:41 字數 2630 閱讀 3065

b、命令(編輯命令)

d:刪除模式空間匹配的行,立即啟用下一輪迴圈

p:列印當前模式空間中內容,追加至預設輸出之後

a [\]text在指定行後面追加文字,追加多行使用『 \n 』 ;[\]表示其後內容均為新增內容

i [\]text 在指定行前面新增文字

c [\]text 替換指定行文字

w /path/file:儲存模式匹配的行至指定文字

r /path/file:讀取指定的文字至模式空間匹配的行行後

=:為模式空間中的行列印行號

!:模式空間中匹配行取反處理

★★★★★ sed經常使用的查詢替換(★ 代表現階段我需要掌握係數)

①s///:查詢替換,支援使用其他分割符,s@@@,s###

②替換標記:

g:全域性替換

p:顯示替換成功的行

w /path/file:將替換成功的行儲存至指定檔案中

c、高階編輯命令(編輯命令) 涉及儲存空間 ★

p: 列印模式空間開端至\n內容,並追加到預設輸出之前

h:把模式空間中的內容覆蓋至儲存空間

h:把模式空間中的內容追加至保持空間

g: 從保持空間取出資料覆蓋至模式空間

g:從保持空間取出內容追加至模式空間

x: 把模式空間中的內容與保持空間中的內容進行互換

n: 讀取匹配到的行的下一行覆蓋至模式空間

n:讀取匹配到的行的下一行追加至模式空間

d: 刪除模式空間中的行

d:如果模式空間包含換行符,則刪除直到第乙個換行符的模式空間中的文字, 並不會讀取新的輸入行,而使用合成的模式空間重新啟動迴圈。如果模式空間不包含換行符,則會像發出d命令那樣啟動正常的新迴圈

★★★★★sed可以將一行文字隨意切割為多份,可對每乙份實現修改

sed練習題1:

1、刪除/etc/grub2.cfg中所有以空白開頭的行行首的空白字元

sed -nr 's/^[[:space:]]+([^[:space:]].*)/\1/p' /etc/grub2.cfg

2、刪除/etc/fstab中所有以#開頭,後面至少跟乙個空白字元的的行的行首的#和空白字元

sed -nr 's/^#[[:space:]]+//p' /etc/fstab

3、在centos6中/root/install.log每行行首加#號

sed -nr 's/(.*)/#\1/p' /root/install.log

4、在/etc/fstab中不以#開頭的行的行首新增#號

sed -nr 's/^[^#](.*)/#\1/p' /etc/fstab

5、將文字的n和n+1行合併為一行,n為奇數行

seq 10| sed -n '1~2p' |xargs -n2

6、利用sed取出ifconfig命令中的ipv4位址

ifconfig |sed -n '2p'|sed -nr 's/[^0-9]+([0-9.]+).*/\1/p'

7、統計centos安裝光碟目錄下所有rpm檔案以.分割的倒數第二個欄位的重複次數

[root@centos7 test]# ls /misc/cd/packages/*.rpm | sed -nr 's/.*\.(.*)\.rpm/\1/p' |sort |uniq -c

2258 i686 32位cpu架構(可以在64位作業系統執行的32位程式)

3122 noarch 與cpu架構無關(二進位制程式才與cpu架構相關)

4639 x86_64 64位cpu架構

...

★★★sed在指令碼中使用變數時,其一般』scripts』 可能導致變數失效,此時可以用三個單引號』』'將變數引起來,以識別scripts中的變數

示例:

[root@centos7 test]# name=root;echo $name;sed -n '/$name/p' /etc/passwd

root

此處變數在單引號內,未能識別是變數

[root@centos7 test]# name=root;echo $name;sed -n '/'''$name'''/p' /etc/passwd

root

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@centos7 test]#

★sed高階用法

示例:

sed -n 'n;p' file

sed '1!g;h;$!d' file

sed『n;d』file

sed '$!n;$!d' file

sed '$!d' file

sed 『g』 file

sed 『g』 file

sed 『/^$/d;g』 file

sed 'n;d' file

sed -n '1!g;h;$p' file

上述示例分析:只分析乙個(以此類推):

Linux文字處理三劍客

grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...

linux文字處理三劍客

常用引數 v 顯示不能夠被匹配到的行 i 忽略大小寫字元 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a 後 行 b 前 行 c 前後各 行 e 使用ere,相當於egrep常用引數 n 只列印模式匹配的行 e 直接在命令列模式上進行sed動作編輯,此為預設選項 f 將sed的動作寫在乙個...

文字處理三劍客

文字處理三劍客 劍客一 grep 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...