Linux命令练习第二关(7)

(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值