gpt4 book ai didi

awk 选择第 1 列与第 2 列部分匹配的行

转载 作者:行者123 更新时间:2023-12-05 09:26:42 25 4
gpt4 key购买 nike

我有一个如下所示的“example_file”,

a2022.1 a2022.1 80
a2022.1 a2022.2 90
a2022.1 a2023.1 80
a2022.2 a2022.2 90
a2022.2 a2023.1 40
a2022.3 a2022.1 50
b20225.1 a2022.1 80

我想选择第三列 > 80 并且第一列(点之前)与第二列(点之前)不同的行。

所以想要的结果是

a2022.1 a2023.1 80
b20225.1 a2022.1 80

所以我已经通过使用下面的行设法排除了第 3 列 <80 以及相同的第 1 和第 2 列的行

awk '($3 > 80 && $1!=$2)' example_file

我尝试了 awk '($3 > 80 && $1!~$2)' example_file,但它不排除该行

a2022.1 a2022.2 90

我以为这很容易,但我想不通。有人可以帮忙吗?谢谢!

最佳答案

你可以使用这个awk:

awk -F '[.[:blank:]]' '$NF >= 80 && $1 != $3' file

a2022.1 a2023.1 80
b20225.1 a2022.1 80

此处 -F '[.[:blank:]]' 将输入字段分隔符设置为点或空白字符。这允许我们将第一列的部分用作 $1$2,将第二列的部分用作 $3$4


或者使用 gnu-awk:

awk '$3 >= 80 && 
gensub(/\..*/, "", "1", $1) != gensub(/\..*/, "", "1", $2)' file

a2022.1 a2023.1 80
b20225.1 a2022.1 80

关于awk 选择第 1 列与第 2 列部分匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73483615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com