我在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為奇數行
seq10 | 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...