只有打印字段才能转换为整数
如果我有此示例文本文件
1 cat
2 dog
3 7
4 fish5
5 22
我希望我的awk脚本只打印字段,如果它可以转换为整数。
我不希望打印第1,2和4行。
示例awk脚本
BEGIN {
print "testing conversion to integer on " ARGV[1];
myinteger = 0; # my atmept to force this var to an integer
}
myinteger = $2;
myinteger != 0 { print $2; }
这不起作用。
我怎样才能让它发挥作用?
答案 0 :(得分:9)
您可以使用模式进行匹配:
awk '$2 ~ /^[0-9]+$/'
如果要允许负值,可以执行以下操作:
awk '$2 ~ /^-?[0-9]+$/'
答案 1 :(得分:9)
Awk计算字符串时出现问题:
awk '$2 + 0 == $2' file.txt
3 7
5 22
这对我也有用:awk '$2 + 0' file.txt
但正如Ed Morton在评论中指出的那样,这也包括以数字开头的字符串,那么这可能更正确:awk '/[a-z]/{next}{print $0}' file.txt
,即如果行中的字母转到下一行。