Awk:列总和在某个范围内时提取行

Awk:列总和在某个范围内时提取行,awk,Awk,使用Awk从$3-$2介于200和400之间的文件中提取行 我正在使用的命令: awk '{ if ($3 - $2 > 199 && < 401) print $0}' Input_File 所需输出示例: B 1000 1300 D 1000 1200 您可以创建一个第3列和第2列之间有差异的变量,然后在条件中使用它 awk '{ val=($3 - $2);if ( val > 199 && val < 4

使用Awk从$3-$2介于200和400之间的文件中提取行

我正在使用的命令:

awk '{ if ($3 - $2 > 199 && < 401) print $0}' Input_File
所需输出示例:

B    1000    1300
D    1000    1200

您可以创建一个第3列和第2列之间有差异的变量,然后在条件中使用它

awk '{ val=($3 - $2);if ( val > 199 && val < 401) print $0}' Input_File

OP尝试出错的原因:OP使用的是如果$3-$2>199&&<401,这是错误的,因为第3列和第2列的差异在<401之前和之后两次没有提及,对于每个条件,应该分别提及或/和条件分隔。所以它应该是这样的:如果$3-$2>199&$3-$2<401。如何制作变量最好避免两次差异,将差异一次放入变量,并在不同的条件下使用。

您可以创建一个差异为第3列和第2列的变量,然后在不同的条件下使用它

awk '{ val=($3 - $2);if ( val > 199 && val < 401) print $0}' Input_File
OP尝试出错的原因:OP使用的是如果$3-$2>199&&<401,这是错误的,因为第3列和第2列的差异在<401之前和之后两次没有提及,对于每个条件,应该分别提及或/和条件分隔。所以它应该是这样的:如果$3-$2>199&$3-$2<401。制作变量时最好避免两次差异,将差异一次放入变量中,并在不同的条件下使用。

您在&&之后的条件是不完整的。您只需使用:

awk'$3-$2>199&$3-$2<401'文件 B 1000 1300 D 1000 1200 &&之后的情况不完整。您只需使用:

awk'$3-$2>199&$3-$2<401'文件 B 1000 1300 D 1000 1200
如果不想重复计算,可以这样做

$ awk '(d=$3-$2)>199 && d<401' file

如果不想重复计算,可以这样做

$ awk '(d=$3-$2)>199 && d<401' file

在哪种编程语言中x-y>199&&<401是有效的语法?Awk语法与任何其他Algol基础语言C、Pascal、Ada等非常相似。,因此,只要想想如何用你熟悉的语言编写你想在if语句中表达的任何东西,然后在awk中使用相同的语法,它几乎肯定是正确的。在哪种编程语言中x-y>199&<401是有效的语法?Awk语法与任何其他Algol基础语言C、Pascal、Ada等非常相似。因此,只要想想如何用熟悉的语言编写if语句中要表达的内容,然后在Awk中使用相同的语法,它几乎肯定是正确的。