sed命令基礎2

2022-04-29 15:45:08 字數 2562 閱讀 9267

我在sed命令基礎

裡面說了一下sed的基礎用法,sed還有一些高階用法,由於我也是在學習中,寫的部落格可能會有想不到的地方,有問題希望大家指出。

sed的高階用法主要在於兩個空間的使用,模式空間保持空間,模式空間就是我們對於進入其中的語句進行處理的空間,保持空間就像是乙個臨時的交換swap,我們可以將模式空間裡面的東西放到保持空間中,或者將保持空間裡面的東西取出追加到模式空間,通過一定的命令,將兩個空間裡面的東西進行處理,能解決很多文字處理問題。

高階編輯命令

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

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

h:把模式空間中的內容覆蓋到保持空間中

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

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

g:從保持空間取出資料追加至模式空間

d:刪除模式空間中的行

d:刪除模式空間中從開始到第乙個\n

一些示例

sed -n 'n;p' file 顯示偶數行

sed '1!g;h;$!d' file 倒序顯示

sed -n '1!g;h;$p' 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 顯示奇數行 

相關的練習(基礎部分的多)

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

cat grub2.cfg |sed -r '

s/^[[:space:]]+//

'

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

sed -r "

/^#[[:space:]]/s/^#[[:space:]]+([^[:space:]])/\1/

" fstab

sed -r '

s/^#[[:space:]]+//

' fstab

3、在centos6系統/root/install.log每一行行首增加#號 

sed

's/^/#/g

' /root/install.log

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

cat /etc/fstab |sed

's/^[^#]/#&/

'

5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名

echo /etc/sysconfig/network-scripts/ |sed -r '

s#(^/.*/)([^/].*/?$)#a:\1\nb:\2#

'

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

ifconfig eth0 |sed -n '

2p' |sed

's#^.*addr:##g

' |sed

's# bcas.*$##g

'

ifconfig eth0 |sed -n -e '

2s#^.*addr:##g

' -e '

s# bcas.*$##gp

'

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

ls /mnt/cdrom/packages/ | sed -r -e "

s/(.*\.)([^\.].*$)/\1/

" -e "

s/(.*\.)([^.].*\.)/\2/

" | sort | uniq -c | sort -n

8、統計/etc/init.d/functions檔案中每個單詞的出現次數,並排序(用grep和sed兩種方法分別實現)

cat /etc/init.d/functions | sed -r "

s/[^[:alpha:]]/\n/g

" | sort | uniq -c | sort -n

cat /etc/init.d/functions | egrep -o "

[[:alpha:]]+

" | sort | uniq -c | sort -n

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

seq

10 | sed

"1~2n;s/\n/ /

"

sed命令學習(2)

table of contents 1.sed簡介 2.定址 3.sed命令 4.選項 5.元字符集 6.例項 7.指令碼 1.sed簡介 2.定址 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1,3表示1,2,3行...

sed 命令使用(2)

1 sed 命令的後項要引用取ip root localhost scripts ifconfig enp0s3 grep inet sed r s inet netmask.1 g 192.168.0.3 root localhost scripts root localhost scripts ...

sed基礎命令彙總

sed流編輯器 一次處理一行內容 原檔案不會被改變 a 新增 sed e 2 a haha test01.txt 在第2行後邊新增haha 新增是在指定行的後邊新增 c 取代 sed e 1c csdn test01.txt 1是行號 把第一行的內容用csdn來替代 d 刪除 sed e 3d te...