我想在 awk 命令中进行拆分和比较。
输入文件(制表符分隔)
1 aaa 1|3
2 bbb 3|3
3 ccc 0|2
过滤
- 第一列值 > 1
- 用“|”分隔的第三列值的第一个值> 2
过程
- 比较第一列的值是否大于 1
- 用“|”分割第三列值
- 比较第三列的第一个值是否大于2
- 仅当第一个值大于 2 时打印
命令行(示例)
awk -F "\t" '{if($1>1 && ....?) print}' file
输出
2 bbb 3|3
请让我知道上述处理的命令行。
最佳答案
您可以将字段分隔符设置为制表符或竖线并检查第一个和第三个值:
awk -F'\t|\\|' '$1>1 && $3>2' file
或
awk -F"\t|\\\\|" '$1>1 && $3>2' file
您可以在埃德·莫顿 (Ed Morton) 在 awk: fatal: Invalid regular expression when setting multiple field separators 中的综合回答中了解所有这些逃逸角色。 .
否则,您可以拆分第 3 个字段并检查第一个切片的值:
awk -F"\t" '{split($3,a,"|")} $1>1 && a[1]>=2' file
关于linux - 在 awk 中拆分和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37384813/