DAY15
删除指定行
sed -i '3d' oldgirl.txt
sed -i '5,8d' oldgirl.txt
输出oldboy.txt的第2-3行内容※。
[root@oldboyedu ~/test]# sed -n '2,3p' oldgirl.txt
问题2:过滤出含有oldboy字符串的行※。
[root@oldboyedu ~/test]# sed -n '/oldboy/p' oldgirl.txt
问题3:删除含有oldboy字符串的行※。
[root@oldboyedu ~/test]# sed '/oldboy/d' oldgirl.txt
问题4:将文件中的oldboy字符串全部替换为oldgirl※。
[root@oldboyedu ~/test]# sed 's#oldboy#oldgirl#g' oldgirl.txt
问题5:将文件中的oldboy字符串全部替换为oldgirl,同时将QQ号码49000448改为31333741。
[root@oldboyedu ~/test]# sed -e 's#oldboy#oldgirl#2' -e 's#49000448#31333741#g' oldgirl.txt
问题6:在oldboy.txt文件的第2行后追加文本。
[root@oldboyedu ~/test]# sed '2a I teacher linux.' oldgirl.txt
此处追加内容就是第三行 2a表示第二行的下面一行
[root@oldboyedu ~/test]# sed '2i I teacher linux.' oldgirl.txt
I am oldboy teacher!
此处2i 表示在第二行的上面一行 即第二行 和a都是在单引号里 是命令的内置自带命令 在外面i 是参数 表示直接修改文件内容
问题1:取出Linux中执行ifconfig eth0后对应的IP地址(只能输出IP地址)
方法1:
[root@oldboyedu ~/test]# ifconfig eth0|sed -n 2p|sed 's#^.inet ##g'|sed 's# netm.$##g'
10.0.0.201
方法:要取一个目标,删除目标两边的,就得到了目标:
先匹配上,然后在删除
三剑客自身有特长的。
grep 过滤查找内容。筛子
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
练习
[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语法:
awk [option] 'pattern{action}' file ...
awk [参数] '条件{动作}' 文件 ...
练习:打印 1 2 和最后一列。
[root@oldboyedu ~]# awk -F ":" '{print 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行的内容。
[root@oldboyedu ~]# awk 'NR>1&&NR<4' oldboyedu.txt
[root@oldboyedu ~]# awk 'NR==2,NR==3' oldboyedu.txt
还有大于等于小于等于
问题2:过滤出含有root字符串的行※。
[root@oldboyedu ~]# awk '/root/' oldboyedu.txt
问题3:删除含有root字符串的行※。
[root@oldboyedu ~]# 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:取文件的第一列、第三列和最后一列内容,并打印行号※。
[root@oldboyedu ~]# awk -F ":" '{print NR,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中执行ifconfig eth0后对应的IP地址(只能输出IP地址)。
[root@oldboyedu ~]# ifconfig eth0|awk 'NR==2{print $2}'
10.0.0.201
C6
[root@oldboy ~]# 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)
[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
问题6:过滤文件中第一列内容匹配root的字符串,把符合的行的最后一列输出
awk -F ":" 'NF}' test.txt 条件匹配