我试图挑选出在特定列中具有特定值的行并将其保存到输出中。我正在尝试用 grep 来做到这一点。是否可以?
我的数据是这样的:
apple 5 abcdefd ewdsf
peach 5 ewtdsfe wtesdf
melon 1 ewtedf wersdf
orange 3 qqqwetr hredfg
我想挑选出第二列中值为 5 的行并将其保存到新的输出文件中。
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).
变化
如果您需要动态选择用于过滤值的键值,请使用
-v
awk
的选项:awk -v "key=5" '$2 == key {print($0)}'
如果您需要保留文件的第一行,因为它包含表的标题,请使用
NR
跟踪当前记录的序号的变量:awk 'NR == 1 || $2 == 5'
字段分隔符是一个正则表达式,定义哪些文本分隔列,可以用
-F
修改。 field 。例如,如果您的数据位于基本 CSV 文件中,则过滤器将是awk -F", *" '$2 == 5'
访问 awk tag wiki 找到一些有用的信息开始学习
awk
.
关于awk - grep:在特定列中保留具有特定字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148546/