Awk 打印第二列有数字的行
这是我的数据-我有1000多行。如何仅获取包含数字的recAwk 打印第二列有数字的行,awk,sed,Awk,Sed,这是我的数据-我有1000多行。如何仅获取包含数字的rec Records | Num 123 | 7 Y1 91 7834 | 7PQ34-102 AB12AC|87 BWE 67 5690278| 80505312 7ER| 998 输出必须是 7ER| 998 5690278| 80505312 我是linux编程新手,任何帮助对我都非常有用。谢谢大家我会使用awk: awk -F'[[:space:]]*[|][[:space:]]*' '$2 ~ /^[[:digit:
Records | Num
123 | 7 Y1 91
7834 | 7PQ34-102
AB12AC|87 BWE 67
5690278| 80505312
7ER| 998
输出必须是
7ER| 998
5690278| 80505312
我是linux编程新手,任何帮助对我都非常有用。谢谢大家我会使用
awk
:
awk -F'[[:space:]]*[|][[:space:]]*' '$2 ~ /^[[:digit:]]+$/'
如果您想打印在评论中要求删除的行数,您可以使用以下方法:
awk -F'[[:space:]]*[|][[:space:]]*' '
{
if($2~/^[[:digit:]]+$/){print}else{c++}
}
END{printf "%d lines deleted\n", c}' file
一个简短的GNU
awk
(gawk
)脚本,用于过滤第二列(字段)中带有数字的行,假设为一个单词字段(例如1234
,或12AB
):
我们使用,即\y
来匹配单词边界。除此之外,非常简单:我们在|
上拆分字段,并在第二个字段中查找孤立的数字
编辑:由于问题已更新,现在明确允许在第二个字段中使用多个单词(例如12 AB
,12-34
,12 34
),以获取第二个字段中仅带有数字和分隔符的行:
awk -F'|' '$2 ~ /^[- 0-9]+$/' file
或者,如果我们说第二个字段中只禁止字母,我们可以使用:
awk -F'|' '$2 ~ /^[^a-zA-Z]+$/' file
如何在linux/unix中仅打印第二列的数字<代码>7ER不在第二位column@RomanPerekhrest标题有误导性,因此我将其更改为
grep
解决方案:grep-P.+\s*?\\\s*\d+$”
,因为基于列的筛选awk
是最合适的工具。如何将列分隔?通过管道,或通过空格,或两者兼而有之?@PS:更具可移植性的是grep'.[:space:][]*[:digit:][]\{1,\}$'
谢谢你的回答。我没有得到任何结果。我需要输出文件中的列和除“非num”zipcodes之外的列。您好,我将$3
编辑为$2
,希望它能交给您审阅和批准,但结果是它是自动批准的。如果你不这么想,就把零钱收起来。好极了!太棒了。我很高兴按照您的解决方案得到正确的结果。我非常感谢你。我真的真的真的希望一切顺利。那么快乐吧now@PS.$2
将是|
@user71597:可能最容易减去:expr$(wc-l
谢谢!如果有问题,第二列包含“87 BWE 67”之类的数据,上面的命令不会忽略这些数据。有没有办法解决这个问题?我已经更新了答案,以反映你修改和更新的问题。第二个和第三个表达式将过滤掉12 aB 34
,但会通过123-456
。您好,如何从同一数据的第二列中删除那些不是5个连续数字的字段。我回答了你第二个问题,看一看。
awk -F'|' '$2 ~ /^[^a-zA-Z]+$/' file