三劍客特長(zhǎng)
grep? 過(guò)濾查找泼掠,篩選
sed? 取行启泣,替換叠荠,追加內(nèi)容
awk? 取列
? ?awk參數(shù)? ? ? ? ? ? ? ?模式動(dòng)作? ? ? ? ? ? ?文件?
? awk [options]? ? ? ? 'pattern{action}'? ? ? file
awk 語(yǔ)法:
-F? 指定分隔符
列:$ 1第一列 $2 第二列
$0? 當(dāng)前整行記錄
$n 當(dāng)前記錄的第n列字段之間由-F指定分隔符
NF當(dāng)前記錄中的列的個(gè)數(shù)持钉,就是多列$
$(NF-n)倒數(shù)第幾列? n為數(shù)字
NR 已經(jīng)讀出的記錄數(shù)刻恭,就是行號(hào)掀宋,從1開(kāi)始
cut 按列切割
-d? ?指定分隔符? ?-f 指定列? -c? 按字符取內(nèi)容
考試
1、問(wèn)題1:輸出oldboy.txt的第2-3行內(nèi)容※。
sed -n '2,3p' oldgirl.txt
2痴奏、問(wèn)題2:過(guò)濾出含有oldboy字符串的行※蛀骇。
sed -n '/oldboy/p' oldgirl.txt
3、問(wèn)題3:刪除含有oldboy字符串的行※读拆。
sed '/oldboy/d' oldgirl.txt
sed /oldboy/d oldgirl.txt
4擅憔、問(wèn)題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檐晕、問(wèn)題5:將文件中的oldboy字符串全部替換為oldgirl暑诸,同時(shí)將QQ號(hào)碼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.
問(wèn)題1:輸出oldboy.txt的第2-3行內(nèi)容※辟灰。
問(wèn)題2:過(guò)濾出含有oldboy字符串的行※个榕。
問(wèn)題3:刪除含有oldboy字符串的行※。
問(wèn)題4:將文件中的oldboy字符串全部替換為oldgirl※芥喇。
問(wèn)題5:將文件中的oldboy字符串全部替換為oldgirl西采,同時(shí)將QQ號(hào)碼49000448改為31333741。
問(wèn)題6:在oldboy.txt文件的第2行后追加文本继控。
問(wèn)題7:在oldboy.txt文件的第2行插入文本苛让。
刪除指定行
sed -i '3d' oldgirl.txt
sed -i '5,8d' oldgirl.txt
作業(yè)環(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、問(wèn)題1:輸出oldboy.txt的第2-3行內(nèi)容※湿诊。
[root@oldboyedu ~/test]# sed -n '2,3p' oldgirl.txt
[root@oldboyedu ~/test]# head -3 oldgirl.txt |tail -2
2狱杰、問(wèn)題2:過(guò)濾出含有oldboy字符串的行※。
[root@oldboyedu ~/test]# sed -n '/oldboy/p' oldgirl.txt
I am oldboy teacher!
our site is http://www.oldboyedu.com
[root@oldboyedu ~/test]# grep oldboy oldgirl.txt
I am oldboy teacher!
our site is http://www.oldboyedu.com
3厅须、問(wèn)題3:刪除含有oldboy字符串的行※仿畸。
[root@oldboyedu ~/test]# sed '/oldboy/d' oldgirl.txt
I like badminton ball ,billiard ball and chinese chess!
my qq num is 49000448.
[root@oldboyedu ~/test]# grep -v "oldboy" oldgirl.txt
I like badminton ball ,billiard ball and chinese chess!
my qq num is 49000448.
4、問(wèn)題4:將文件中的oldboy字符串全部替換為oldgirl※朗和。
[root@oldboyedu ~/test]# sed 's#oldboy#oldgirl#g' oldgirl.txt
I am oldgirl teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldgirledu.com
my qq num is 49000448.
vim替換:
5错沽、問(wèn)題5:將文件中的oldboy字符串全部替換為oldgirl,同時(shí)將QQ號(hào)碼49000448改為31333741眶拉。
[root@oldboyedu ~/test]# sed -e 's#oldboy#oldgirl#2' -e 's#49000448#31333741#g' oldgirl.txt
6千埃、問(wèn)題6:在oldboy.txt文件的第2行后追加文本
[root@oldboyedu ~/test]# sed '2a I teacher linux.' oldboy.txt
[root@oldboyedu ~/test]# sed -i '2a I teacher linux.' oldboy.txt
[root@oldboyedu ~/test]# sed '2i I teacher linux.i' oldgirl.txt
問(wèn)題1:取出Linux中執(zhí)行ifconfig eth0后對(duì)應(yīng)的IP地址(只能輸出IP地址)。
方法1:?
[root@oldboyedu ~/test]# ifconfig eth0|sed -n 2p|sed 's#^.*inet ##g'|sed 's#? netm.*$##g'
10.0.0.201
方法:要取一個(gè)目標(biāo)忆植,刪除目標(biāo)兩邊的放可,就得到了目標(biāo):
先匹配上,然后在刪除
[root@oldboyedu ~]# ifconfig eth0|sed -n 2p|sed 's#^.*inet ##g'|sed 's#? netm.*$##g'
10.0.0.201
[root@oldboyedu ~]# ifconfig eth0|sed -n 2p|sed -e 's#^.*inet ##g' -e 's#? netm.*$##g'
10.0.0.201
[root@oldboyedu ~]# ifconfig eth0|sed -ne 's#^.*inet ##g' -e 's#? netm.*$##gp'
10.0.0.201
[root@oldboyedu ~]# ifconfig eth0|sed -nr '2s#^.*inet (.*)? netm.*$#\1#gp'
10.0.0.201
stat /etc/hosts自行取其中的644
[root@oldboyedu ~]# stat /etc/hosts
root@oldboyedu ~]# 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
三劍客自身有特長(zhǎng)的耀里。
grep 過(guò)濾查找內(nèi)容。篩子
sed? 取行拾氓,替換冯挎,刪除,追加
awk? 取列
cut 按列切割
-d 指定分隔符 -f指定哪列咙鞍,多列用逗號(hào)
[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
練習(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@oldboyedu ~]# cut -d":" -f3,4 /etc/passwd
0:0
1:1
2:2
[root@oldboyedu ~]# cat b.txt
oldboy 49000448
[root@oldboyedu ~]# cut -c1-6,8- b.txt
oldboy4900044
awk語(yǔ)法:
awk? [option]? 'pattern{action}' file ...
awk? [參數(shù)]? ? ? '條件{動(dòng)作}'? ? 文件 ...
參數(shù):
-F 指定分隔符
打印第一列:
[root@oldboyedu ~]# awk -F ":" '{print $1}' oldboyedu.txt
[root@oldboyedu ~]# awk -F ":" '{print $3,$5}' oldboyedu.txt
列:$1第一列 $2第二列 以此類(lèi)推....
$0? 整行
$NF 最后一列 倒數(shù)第一列
$(NF-1) 倒數(shù)第二列
問(wèn)題1:取test.txt文件的第2行到第3行的內(nèi)容房官。
[root@oldboyedu ~]# awk 'NR>1&&NR<4' oldboyedu.txt
[root@oldboyedu ~]# awk 'NR==2,NR==3' oldboyedu.txt
問(wèn)題2:過(guò)濾出含有root字符串的行※趾徽。
[root@oldboyedu ~]# awk '/root/' oldboyedu.txt
[root@oldboyedu ~]# awk /root/ oldboyedu.txt
問(wèn)題3:刪除含有root字符串的行※。
[root@oldboyedu ~]# awk '/^[^r]/' oldboyedu.txt
[^r]? 非r
^[^r] 以非r字符卡頭
問(wèn)題4:取文件的第一列翰守、第三列和最后一列內(nèi)容附较,并打印行號(hào)※。
[root@oldboyedu ~]# awk -F ":" '{print NR,$1,$3,$NF}' oldboyedu.txt
問(wèn)題5:取出Linux中執(zhí)行ifconfig eth0后對(duì)應(yīng)的IP地址(只能輸出IP地址)潦俺。
[root@oldboyedu ~]# ifconfig eth0|awk 'NR==2{print $2}'
10.0.0.201
C6
[root@oldboy ~]# ifconfig eth0
[root@oldboy ~]# ifconfig eth0|awk 'NR==2{print $2}'
addr:10.0.0.202
[root@oldboy ~]# ifconfig eth0|awk 'NR==2{print $2}'|awk -F ":" '{print $2}'
10.0.0.202
[root@oldboy ~]# ifconfig eth0|awk -F "[: ]+" 'NR==2{print $4}'
10.0.0.202
問(wèn)題6:過(guò)濾文件中第一列內(nèi)容匹配root的字符串,把符合的行的最后一列輸出
awk -F ":" '$1~/root/ {print $NF}' test.txt
問(wèn)題
問(wèn)題1:取test.txt文件的第2行到第3行的內(nèi)容徐勃。
問(wèn)題2:過(guò)濾出含有root字符串的行※事示。
問(wèn)題3:刪除含有root字符串的行※。
問(wèn)題4:取文件的第一列僻肖、第三列和最后一列內(nèi)容肖爵,并打印行號(hào)※。
問(wèn)題5:取出Linux中執(zhí)行ifconfig eth0后對(duì)應(yīng)的IP地址(只能輸出IP地址)臀脏。
問(wèn)題6:過(guò)濾文件中第一列內(nèi)容匹配root的字符串劝堪,把符合的行的最后一列輸出
問(wèn)題7:過(guò)濾下列test1.txt文件中第三列內(nèi)容分?jǐn)?shù)大于70,并且小于95的人名和性別揉稚。