(13)已知如下命令及结果:
[root@ianLinux ~]# echo "I am Ian,myqq is 123456">>ianTest.txt
[root@ianLinux ~]# cat ianTest.txt
I am Ian,myqq is 123456
a.现在需要从文件中过滤出“Ian”和”123456”字符串,请给出命令。
b.如果需要从文件中过滤“Ian,123456”字符串,请再给出命令。
解答:
无“,”处理
先来看看上面内容中没有“,”时的处理方法:
[root@ianLinux ~]# cat ianTest.txt
I am Ian myqq is 123456
awk方法
[root@ianLinux ~]# awk '{print $3" "$6}' ianTest.txt
Ian 123456
grep方法
[root@ianLinux ~]# grep -oE "Ian|123456" ianTest.txt
Ian
123456
补充:
cut 切割,简单的取列命令
- -d指定分隔符
- -f数字 取第几列(-f3,6)
- -c按字符取
cut方法
[root@ianLinux ~]# cut -d" " -f3,6 ianTest.txt
Ian 123456
[root@ianLinux ~]# cat ianTest.txt
I am Ian myqq is 123456
[root@ianLinux ~]# cut -c 6-8,18- ianTest.txt
Ian123456
有“,”处理
再来看看内容中有“,”时的处理方法:
a题方法一
[root@ianLinux ~]# cat ianTest.txt
I am Ian,myqq is 123456
[root@ianLinux ~]# cut -c 6-8,18- ianTest.txt
Ian123456
a题方法二
用sed替换后再cut
[root@ianLinux ~]# cat ianTest.txt
I am Ian,myqq is 123456
[root@ianLinux ~]# sed 's#,# #g' ianTest.txt
I am Ian myqq is 123456
[root@ianLinux ~]# sed 's#,# #g' ianTest.txt |cut -d " " -f3,6
Ian 123456
千万别写成这样:
[root@ianLinux ~]# sed 's#,# #g' ianTest.txt |cut -d " " -f3,6 ianTest.txt
Ian,myqq
a题方法三
awk多分隔符使用
[root@ianLinux ~]# cat ianTest.txt
I am Ian,myqq is 123456
[root@ianLinux ~]# awk -F "[, ]" '{print $3" "$6}' ianTest.txt
Ian 123456
a题方法四
grep方法
[root@ianLinux ~]# grep -oE "Ian|123456" ianTest.txt
Ian
123456