我想在awk命令中拆分和比较。
输入文件(制表符分隔)
1 aaa 1|3
2 bbb 3|3
3 ccc 0|2
过滤
流程
命令行(示例)
awk -F "\t" '{if($1>1 && ....?) print}' file
输出
2 bbb 3|3
请告知我上述处理的命令行。
答案 0 :(得分:5)
您可以将字段分隔符设置为制表符或管道,并检查第1和第3个值:
awk -F'\t|\\|' '$1>1 && $3>2' file
或
awk -F"\t|\\\\|" '$1>1 && $3>2' file
你可以在awk: fatal: Invalid regular expression when setting multiple field separators的Ed Morton的综合答案中读到所有这些逃避的角色。
否则,您可以拆分第3个字段并检查第一个切片的值:
awk -F"\t" '{split($3,a,"|")} $1>1 && a[1]>=2' file