gpt4 book ai didi

linux - 使用 AWK 根据列数过滤行

转载 作者:IT王子 更新时间:2023-10-29 00:19:16 27 4
gpt4 key购买 nike

我有几行数据包含单列和两列。我想做的是提取仅包含 2 列的行。

0333 foo
bar
23243 qux

仅产生:

0333 foo
23243 qux

请注意,它们是用制表符分隔的,即使对于只有一列的行也是如此你在开头有制表符。

有什么方法可以做到?

我试过了但是失败了:

awk '$1!="";{print $1 "\t" $2}' myfile.txt

enter code here

最佳答案

您需要使用NF(字段数)变量来控制操作,例如在以下抄本中:

$ echo '0333 foo
> bar
> 23243 qux' | awk 'NF==2{print}{}'
0333 foo
23243 qux

如果字段数是两个,这将打印该行,否则将不执行任何操作。我有(看似)奇怪的构造 NF==2{print}{} 的原因是因为 awk 的一些实现会在没有规则匹配的情况下默认打印线。空命令 {} 保证不会发生这种情况。

如果你足够幸运,拥有一个不这样做的人,你可以逃脱:

awk 'NF==2'

但上面的第一个解决方案在两种情况下都适用。

关于linux - 使用 AWK 根据列数过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393895/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com