我试图找出某些列中具有特定值的行并将其保存到输出中.我试图用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.