我想知道第3列是否在第1列和第2列中,在第4列中为每行指示“是”或“否”。这在awk中可行吗?
start end snp-pos region
392 508 410
100 216 222
269 388 198
start end snp-pos region
392 508 410 yes
100 216 222 no
269 388 198 no
答案 0 :(得分:0)
$ awk 'NR==1{print;next} {print $0, ($3>$1 && $3<$2 ? "yes" : "no")}' file
start end snp-pos region
392 508 410 yes
100 216 222 no
269 388 198 no
如果您关心列出的列,可以输入column -t
:
$ awk 'NR==1{print;next} {print $0, ($3>$1 && $3<$2 ? "yes" : "no")}' file | column -t
start end snp-pos region
392 508 410 yes
100 216 222 no
269 388 198 no
或者我们可以编写更多代码并在awk中完全处理它,例如:
awk 'NR==1{print;w=match($0,$NF)-1;next} {printf "%-*s%s\n", w, $0, ($3>$1 && $3<$2 ? "yes" : "no")}' file
start end snp-pos region
392 508 410 yes
100 216 222 no
269 388 198 no