这是我的数据 - 我超过1000人。如何只获得包含数字的rec。
Records | Num
123 | 7 Y1 91
7834 | 7PQ34-102
AB12AC|87 BWE 67
5690278| 80505312
7ER| 998
输出必须是
7ER| 998
5690278| 80505312
我是linux编程的新手,任何帮助对我都非常有用。谢谢所有
答案 0 :(得分:1)
我会使用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
答案 1 :(得分:0)
一个简短的GNU awk
(gawk
)脚本,用于过滤第二列(字段)中带数字的行,假设一个单词字段(例如{ {1}}或1234
):
12AB
我们使用GNU extension for regexp operators,即awk -F'|' '$2 ~ /\y[0-9]+\y/' file
来匹配字边界。除此之外,非常简单:我们在\y
上拆分字段并在第二个字段中查找孤立的数字。
修改:由于问题已更新,现在明确允许第二个字段中包含多个字(例如|
,12 AB
,12-34
),在第二个字段中仅使用数字和分隔符> >>
12 34
或者,如果我们说在第二个字段中只禁止字母,我们可以使用:
awk -F'|' '$2 ~ /^[- 0-9]+$/' file