在下面的awk
中,我预计添加NR==2
只会打印检查第二行$1
值,1
并确保它是一个数字。如果是,则打印Index is a number
其他
Index is not a number
。它似乎很接近,但结果不是预期的......也许我使用了错误的变量?谢谢你:)。
file.txt的
Index Chr Start End Ref Alt Quality Freq Score HGMD
1 1 10 100 A - GOOD .002 2 .
2 1 100 1000 - C STRAND BIAS .036 10 .
3 5 50 500 AA T GOOD 1 5 .
AWK
awk -F'\t' 'NR==2 $1 ~ /^[[:digit:]]/ {print "Index is a number"} ELSE {print "Index is not a number"}' file.txt
Index is a number
Index is a number
Index is a number
Index is a number
Index is a number
期望的输出
Index is a number
答案 0 :(得分:1)
awk 'NR==2 {print "Index is "($2~/^[0-9]+$/?"":"not ") "a number";exit}' file
exit
-F
选项答案 1 :(得分:1)
我认为您正在寻找类似下面的内容,
awk 'BEGIN{FS="\t"} NR==2 { if (match($1,/^[[:digit:]]/)) { print "Index is a number" } else { print "Index is not a number" } }' file
Index is a number
您当然可以通过删除NR==2
或添加NR>1
来将此扩展到任意行数,这样您就可以跳过标题。
答案 2 :(得分:1)
使用以下方法:
awk 'NR==2{printf("Index is%s a number\n", ($1~/^[0-9]+$/)? "":" not")}' file.txt
输出:
Index is a number
$1~/^[0-9]+$/
- 确保第一个字段是数字