問題1:輸出oldboy.txt的第2-3行內(nèi)容※。
sed -n '2,3p' oldgirl.txt
問題2:過濾出含有oldboy字符串的行※嗜愈。
sed -n '/oldboy/p' oldgirl.txt
問題3:刪除含有oldboy字符串的行※。
sed '/oldboy/d' oldgirl.txt
sed /oldboy/d oldgirl.txt
問題4:將文件中的oldboy字符串全部替換為oldgirl※挖诸。
vim替換:
:%s#oldboy#oldgirl#g
sed 's#想替換啥#用啥替換#g' oldgirl.txt
sed 's#oldboy#oldgirl#g' oldgirl.txt
修改文件:
sed -i 's#oldboy#oldgirl#g' oldgirl.txt
問題5:將文件中的oldboy字符串全部替換為oldgirl巴粪,同時將QQ號碼49000448改為31333741何址。
sed -e 's#oldboy#oldgirl#g' -e 's#49000448#31333741#g' oldgirl.txt I
環(huán)境:
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
問題1:輸出oldboy.txt的第2-3行內(nèi)容※斩熊。
問題2:過濾出含有oldboy字符串的行※往枣。
問題3:刪除含有oldboy字符串的行※。
問題4:將文件中的oldboy字符串全部替換為oldgirl※座享。
問題5:將文件中的oldboy字符串全部替換為oldgirl婉商,同時將QQ號碼49000448改為31333741。
問題6:在oldboy.txt文件的第2行后追加文本渣叛。
問題7:在oldboy.txt文件的第2行插入文本。
刪除指定行
sed -i '3d' oldgirl.txt
sed -i '5,8d' oldgirl.txt
環(huán)境:
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
問題1:輸出oldboy.txt的第2-3行內(nèi)容
sed -n '2,3p' oldgirl.txt
?head -3 oldgirl.txt |tail -2
問題2:過濾出含有oldboy字符串的行※
?sed -n '/oldboy/p' oldgirl.txt
grep oldboy oldgirl.txt
問題3:刪除含有oldboy字符串的行※盯捌。
sed '/oldboy/d' oldgirl.txt
grep -v "oldboy" oldgirl.txt
問題4:將文件中的oldboy字符串全部替換為oldgirl※淳衙。
vim替換:
問題5:將文件中的oldboy字符串全部替換為oldgirl,同時將QQ號碼49000448改為31333741饺著。
?sed -e 's#oldboy#oldgirl#2' -e 's#49000448#31333741#g' oldgirl.txt
問題6:在oldboy.txt文件的第2行后追加文本箫攀。
?sed '2a I teacher linux.' oldgirl.txt
cat oldgirl.txt
sed -i '2a I teacher linux.' oldgirl.txt
sed '2i I teacher linux.i' oldgirl.txt
問題1:取出Linux中執(zhí)行ifconfig eth0后對應(yīng)的IP地址(只能輸出IP地址)。
練習(xí)sed
正則是貪婪匹配模式幼衰,人性是貪婪的靴跛。
方法1:
?ifconfig eth0|sed -n 2p|sed 's#^.*inet ##g'|sed 's#? netm.*$##g'
10.0.0.201
方法:要取一個目標(biāo),刪除目標(biāo)兩邊的渡嚣,就得到了目標(biāo):
先匹配上梢睛,然后在刪除
?ifconfig eth0|sed -n 2p|sed 's#^.*inet ##g'|sed 's#? netm.*$##g'
10.0.0.201
ifconfig eth0|sed -n 2p|sed -e 's#^.*inet ##g' -e 's#? netm.*$##g'
10.0.0.201
ifconfig eth0|sed -ne 's#^.*inet ##g' -e 's#? netm.*$##gp'
10.0.0.201
ifconfig eth0|sed -nr '2s#^.*inet (.*)? netm.*$#\1#gp'
10.0.0.201
驗(yàn)證是否懂了的練習(xí)題:
stat /etc/hosts自行取其中的644
?stat /etc/hosts
? File: ‘/etc/hosts’
? Size: 158? ? ? Blocks: 8? ? ? ? ? IO Block: 4096? regular file
Device: 803h/2051d Inode: 16829878? ? Links: 1
Access: (0644/-rw-r--r--)? Uid: (? ? 0/? ? root)? Gid: (? ? 0/? ? root)
Access: 2020-10-06 20:40:18.463001804 +0800
Modify: 2013-06-07 22:31:32.000000000 +0800
Change: 2019-03-04 11:15:49.426692303 +0800
Birth: -
?stat /etc/hosts|sed -rn 's#^.*\(0(.*)/-.*$#\1#gp'
644
考試:ip add的輸出取出IP。
[root@oldboyedu ~]# ip add|sed -rn 's#^.*net (.*)/24.*$#\1#gp'
10.0.0.201
1识椰、象棋绝葡,教學(xué),比賽腹鹉,活動
2藏畅、踢毽子,比賽功咒。最牛的單人前三愉阎,小組前三绞蹦。
三劍客自身有特長的。
grep 過濾查找內(nèi)容榜旦。篩子
sed? 取行幽七,替換,刪除章办,追加
awk? 取列
cut 按列切割
-d 指定分隔符 -f指定哪列锉走,多列用逗號
[root@oldboyedu ~]# cat a.txt
1 2 3 4 5 6 7 8 9 10
[root@oldboyedu ~]# cut -d" " -f1,3,5 a.txt
1 3 5
[root@oldboyedu ~]# cut -d" " -f3-5 a.txt
3 4 5
練習(xí)
sed -n '1,5p' /etc/passwd >oldboyedu.txt
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@oldboyedu ~]# cut -d":" -f3,4 /etc/passwd
0:0
1:1
2:2
?cat b.txt
oldboy 49000448
?cut -c1-6,8- b.txt
oldboy4900044
awk語法:
awk? [option]? 'pattern{action}' file ...
awk? [參數(shù)]? ? ? '條件{動作}'? ? 文件 ...
參數(shù):
-F 指定分隔符
打印第一列:
?awk -F ":" '{print $1}' oldboyedu.txt
root
bin
daemon
adm
lp
?awk -F ":" '{print $3,$5}' oldboyedu.txt
0 root
1 bin
2 daemon
3 adm
4 lp
列:$1第一列 $2第二列 以此類推....
$0? 整行
$NF 最后一列 倒數(shù)第一列
$(NF-1) 倒數(shù)第二列
?awk -F ":" '{print $NF}' oldboyedu.txt
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
?awk -F ":" '{print $0}' 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
練習(xí):打印 1 2 和最后一列。
awk -F ":" '{print $1,$2,$NF}' oldboyedu.txt
root x /bin/bash
bin x /sbin/nologin
daemon x /sbin/nologin
adm x /sbin/nologin
lp x /sbin/nologin
問題1:取test.txt文件的第2行到第3行的內(nèi)容藕届。
awk 'NR>1&&NR<4' oldboyedu.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
awk 'NR==2,NR==3' oldboyedu.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
問題2:過濾出含有root字符串的行※挪蹭。
?awk '/root/' oldboyedu.txt
root:x:0:0:root:/root:/bin/bash
?awk /root/ oldboyedu.txt
root:x:0:0:root:/root:/bin/bash
awk "/root/" oldboyedu.txt
root:x:0:0:root:/root:/bin/bash
問題3:刪除含有root字符串的行※。
?awk '/^[^r]/' oldboyedu.txt
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
[^r]? 非r
^[^r] 以非r字符卡頭
問題4:取文件的第一列休偶、第三列和最后一列內(nèi)容梁厉,并打印行號※。
awk -F ":" '{print NR,$1,$3,$NF}' oldboyedu.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地址)踏兜。
?ifconfig eth0|awk 'NR==2{print $2}'
10.0.0.201
C6
ifconfig eth0
eth0? ? ? Link encap:Ethernet? HWaddr 00:0C:29:D0:87:20?
? ? ? ? ? inet addr:10.0.0.202? Bcast:10.0.0.255? Mask:255.255.255.0
? ? ? ? ? inet6 addr: fe80::20c:29ff:fed0:8720/64 Scope:Link
? ? ? ? ? UP BROADCAST RUNNING MULTICAST? MTU:1500? Metric:1
? ? ? ? ? RX packets:243 errors:0 dropped:0 overruns:0 frame:0
? ? ? ? ? TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
? ? ? ? ? collisions:0 txqueuelen:1000
? ? ? ? ? RX bytes:20674 (20.1 KiB)? TX bytes:8706 (8.5 KiB)
?ifconfig eth0|awk 'NR==2{print $2}'
addr:10.0.0.202
?ifconfig eth0|awk 'NR==2{print $2}'|awk -F ":" '{print $2}'
10.0.0.202
ifconfig eth0|awk -F "[: ]+" 'NR==2{print $4}'
10.0.0.202
問題6:過濾文件中第一列內(nèi)容匹配root的字符串词顾,把符合的行的最后一列輸出
awk -F ":" '$1~/root/ {print $NF}' test.txt
~匹配