awk – grep:保留某些列中具有特定字符串的行

我试图找出某些列中具有特定值的行并将其保存到输出中.我试图用grep这样做.可能吗?

我的数据如下所示:

apple   5   abcdefd  ewdsf
peach   5   ewtdsfe  wtesdf
melon   1   ewtedf   wersdf
orange  3   qqqwetr  hredfg

我想在第二列中挑选出值为5的行并将其保存到新的outputfile中.

apple   5   abcdefd  ewdsf
peach   5   ewtdsfe  wtesdf

我很感激你的帮助!

解决方法

grep可能是可能的,但执行此操作的适当工具肯定是awk.您可以过滤第二列上每行5的行

awk '$2 == 5'

说明

awk将其输入分为记录(通常是一行)和字段(通常是一列),并对符合特定条件的记录执行操作.这里

awk '$2 == 5'

是一个简短的表格

awk '$2 == 5 {print($0)}'

转化为

For each record,if the second field ($2) is 5,print the full record ($0).

变化

如果您需要动态选择用于过滤值的键值,请使用awk的-v选项:

awk -v "key=5" '$2 == key {print($0)}'

如果您需要保留文件的第一行,因为它包含表的标题,请使用跟踪当前记录的序号的NR变量:

awk 'NR == 1 || $2 == 5'

字段分隔符是一个正则表达式,用于定义哪些文本分隔列,可以使用-F字段进行修改.例如,如果您的数据位于基本CSV文件中,则过滤器将是

awk -F",*" '$2 == 5'

访问awk标签维基,找到一些有用的信息来开始学习awk.

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...