Day15
作者:方維超
歸檔:課堂筆記
時間:2019/3/20
學(xué)無止境谁撼,老男孩教育成就你人生的起點娃胆!
(接昨天問題)問題六——插入行內(nèi)容:
[root@oldboy/test]# sed '2a wo ai shao di' oldgirl.txt
I am oldboy teacher!
I teach linux.
wo ai shao di
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
not 4900000448
my god,iam not oldboy,butOLDBOY!
[root@oldboy/test]# sed '1a wo ai shao di' oldgirl.txt
I am oldboy teacher!
wo ai shao di
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
not 4900000448
my god,iam not oldboy,butOLDBOY!
練習(xí)sed
正則是貪婪匹配模式与倡,人性是貪婪的距帅。
問題1****:取出Linux****中執(zhí)行ifconfig eth0****后對應(yīng)的IP****地址(只能輸出IP****地址)抖仅。
方法1:
[root@oldboy/test]# ifconfig eth0|sed -n 2p|sed -e 's#^.inet##g' -e 's#netm.$##g'
10.0.0.200
[root@oldboy/test]# ifconfig eth0|sed -ne 's#^.inet##g' -e 's#netm.$##gp'
10.0.0.200
[root@oldboy/test]# ifconfig eth0|sed -n 2p|sed 's#^.inet##g'|sed 's#netm.$##g'
10.0.0.200
方法:要取一個目標,刪除目標兩邊的咏窿,就得到了目標:
先匹配上斟或,然后在刪除
邏輯圖:
驗證是否懂了的練習(xí)題:
stat /etc/hosts****自行取其中的644
[root@oldboy/test]# stat /etc/hosts|sed -n 4p|sed 's#^.(0##g'|sed 's#/-.$##g'
644
[root@oldboy/test]# stat /etc/hosts|sed -nr 's#^.(0(.)/-.*$#\1#gp'
644
[root@oldboy/test]# stat /etc/hosts|sed -rn 's#^.(0(.)/-.*$#\1#gp'
644
考試:ip add****的輸出取出IP****。
[root@oldboy/test]# ip add |sed -n 9p|sed 's#^.inet ##g'|sed 's#/24.$##g'
10.0.0.200
[root@oldboy/test]# ip add |sed -n 9p|sed -e 's#^.inet ##g' -e 's#/24.$##g'
10.0.0.200
[root@oldboy/test]# ip add |sed -rn 's#^.inet(.)/24.*$#\1#gp'
10.0.0.200
三劍客自身特長:
grep 過濾查找內(nèi)容(相當(dāng)于篩子)
sed 取行翰灾,替換缕粹,刪除,追加
awk 取列
awk****語法
參數(shù):
-F 指定分隔符
打印第一列
列:2第二列
$0整行
(NF-1)倒數(shù)第二列
cut 按列切割
-d 指定分隔符
-f 指定哪列,多列用亚享,連續(xù)多列如:f1-5****咽块;f3-5
練習(xí):
[root@oldboy/test]# cut -d"/" -f1,4,3,5 a.txt
1/3/4/5
[root@oldboy/test]# cut -d" " -f1-7 a.txt
1 2 3 4 5 6 7
[root@oldboy/test]# cut -d" " -f1,5,2,6 a.txt
1 2 5 6
練習(xí):
[root@oldboyedu ~]# sed -n '1,5p' /etc/passwd >oldboyedu.txt
[root@oldboyedu ~]# cat oldboyedu.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@oldboy/test]# cut -d":" -f3,4 b.txt
0:0
1:1
2:2
3:4
4:7
問題1:取test.txt文件的第2行到第3行的內(nèi)容。
[root@oldboy/test]# awk 'NR==2,NR==3' test.txt
PROXY_METHOD=none
BROWSER_ONLY=no
問題2:過濾出含有root字符串的行※欺税。
[root@oldboy/test]# awk '/IP/' test.txt
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPADDR=10.0.0.200
IPV6_PRIVACY=no
[root@oldboy/test]# grep "IP" test.txt
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPADDR=10.0.0.200
IPV6_PRIVACY=no
問題3:刪除含有root字符串的行※侈沪。
[root@oldboy/test]# awk '/[I]/' test.txt
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
UUID=b5b390e4-85a9-4923-a26b-18445fb1858a
DEVICE=eth0
ONBOOT=yes
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
[root@oldboy/test]# sed '/IP/d' test.txt
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
UUID=b5b390e4-85a9-4923-a26b-18445fb1858a
DEVICE=eth0
ONBOOT=yes
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
問題4:取文件的第一列、第三列和最后一列內(nèi)容晚凿,并打印行號※亭罪。
[root@oldboy/test]# cat -n b.txt |awk -F":" '{print 3,$NF}' b.txt
root 0 /bin/bash
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
adm 3 /sbin/nologin
lp 4 /sbin/nologin
[root@oldboy/test]# awk -F":" '{print NR,3,$NF}' b.txt
1 root 0 /bin/bash
2 bin 1 /sbin/nologin
3 daemon 2 /sbin/nologin
4 adm 3 /sbin/nologin
5 lp 4 /sbin/nologin
問題5:取出Linux中執(zhí)行ifconfig eth0后對應(yīng)的IP地址(只能輸出IP地址)。
[root@oldboy/test]# ifconfig eth0|sed -n 2p|sed 's#^.inet ##g'|sed 's#netm.$##g'
10.0.0.200
問題6:過濾文件中第一列內(nèi)容匹配root的字符串歼秽,把符合的行的最后一列輸出
[root@oldboy/test]# awk -F":" 'NF}' b.txt
/bin/bash
問題7:過濾下列c.txt文件中第三列內(nèi)容分數(shù)大于70应役,并且小于95的人名和性別。
[root@oldboy/test]# awk '3<95{print
2}' c.txt
張三 男
王五 男