Bash 使用awk计算具有不同条件的行数

Bash 使用awk计算具有不同条件的行数,bash,awk,merge,count,wc,Bash,Awk,Merge,Count,Wc,我需要得到一个文本文件中具有两种不同条件的行数。 第一个条件是第三列的值小于10,因此我可以通过以下脚本执行此操作: awk '$3<=10' DATA_File | wc -l 或 但是,我不知道如何将这些命令合并到一个字符串中,这样我就可以将结果保存在一个单独的文件中,其中一个字符串由“tab”或“space”分隔,其中“number of string with您可以说: $ awk '$3<=10 {min10++} END {print min10, FNR, (FNR?

我需要得到一个文本文件中具有两种不同条件的行数。 第一个条件是第三列的值小于10,因此我可以通过以下脚本执行此操作:

awk '$3<=10' DATA_File | wc -l


但是,我不知道如何将这些命令合并到一个字符串中,这样我就可以将结果保存在一个单独的文件中,其中一个字符串由“tab”或“space”分隔,其中“number of string with您可以说:

$ awk '$3<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333

(FNR?min10/FNR:0)
技巧是出于礼貌,用于防止零度跳水。

例如,你可以说:

$ awk '$3<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333

(FNR?min10/FNR:0)
技巧是出于礼貌,用于防止零度跳水。

例如,你可以说:

$ awk '$3<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333

(FNR?min10/FNR:0)
技巧是出于礼貌,用于防止零度跳水。

例如,你可以说:

$ awk '$3<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333


(FNR?min10/FNR:0)
技巧是出于礼貌,用于防止偏离零位。

请参阅我对问题的格式设置了一点。尝试使用编辑按钮来改进问题的外观。这样就更容易理解您想要的内容以及您想要的外观!请注意,您想要的输出是
2 3
,而它应该是
1 3(只有一行有$3是的,你完全正确。应该是13。带有printf的版本更好一点,因为如果没有低于10的值,它会显示0。非常感谢你在这方面的帮助!!!请看我对你的问题进行了一些格式化。试着使用编辑按钮来改进你的问题的外观。这样更容易理解。)了解您想要什么以及您想要它的样子!注意您想要的输出是
23
,而它应该是
13
(只有一行有$3是的,你完全正确。应该是13。带有printf的版本更好一点,因为如果没有低于10的值,它会显示0。非常感谢你在这方面的帮助!!!请看我对你的问题进行了一些格式化。试着使用编辑按钮来改进你的问题的外观。这样更容易理解。)了解您想要什么以及您想要它的样子!注意您想要的输出是
23
,而它应该是
13
(只有一行有$3是的,你完全正确。应该是13。带有printf的版本更好一点,因为如果没有低于10的值,它会显示0。非常感谢你在这方面的帮助!!!请看我对你的问题进行了一些格式化。试着使用编辑按钮来改进你的问题的外观。这样更容易理解。)了解您想要什么以及您想要它的样子!注意您想要的输出是
23
,而它应该是
13
(只有一行有$3是的,你完全正确。应该是13。带有printf的版本更好一点,因为如果没有低于10的值,它会在一个案例中显示0。非常感谢你在这方面的帮助!!!也可以做awk
{x+=$3好的一个!在我的老眼睛看来有点太黑了,我更喜欢可读性更强的东西:DFair够了:)我本来打算发布几乎完全相同的答案,但你抢先一步。唯一的区别是,我想我应该把它作为一个注释添加:)是的,这似乎是awk版本相关的行为。通过你的示例和纳克,我得到了
nawk:printf(he%llo)或sprintf(he%llo)中没有足够的参数
和/usr/xpg4/bin/awk
he/usr/xpg4/bin/awk:0行():printf或sprintf
和gawk的参数不足--posix
gawk:cmd.line:1:致命:posix awk格式中不允许使用“l”,但没有
--posix
函数的gawk就可以了。@EdMorton因此看起来像是符合posix的
printf
必须使用
%
来打印
%
。也就是说,任何想要打印的东西要算作POSIX必须禁止它。有趣!也可以做awk
{x+=$3好的一个!在我以前的眼里看起来有点太黑了,我更喜欢可读性更强的东西:DFair够了:)我本来打算发布几乎完全相同的答案,但你抢先了我。唯一的区别是,我想我只是把它作为一个注释添加:)是的,行为似乎与awk版本有关。根据您的示例和nawk,我得到
nawk:printf(he%llo)或sprintf(he%llo)
和/usr/xpg4/bin/awk
he/usr/xpg4/bin/awk:0行():printf或sprintf
和gawk的参数不足--posix
gawk:cmd.line:1:致命:posix awk格式中不允许使用“l”,但没有
--posix
函数的gawk就可以了。@EdMorton因此看起来像是符合posix的
printf
必须使用
%
来打印
%
。也就是说,任何想要打印的东西要算作POSIX必须禁止它。有趣!也可以做awk
{x+=$3好的一个!在我以前的眼里看起来有点太黑了,我更喜欢可读性更强的东西:DFair够了:)我本来打算发布几乎完全相同的答案,但你抢先了我。唯一的区别是,我想我只是把它作为一个注释添加:)是的,行为似乎与awk版本有关。根据您的示例和nawk,我得到
nawk:printf(he%llo)或sprintf(he%llo)
和/usr/xpg4/bin/awk
he/usr/xpg4/bin/awk:0行():printf或sprintf
和gawk的参数不足--posix
gawk:cmd.line:1:致命:posix awk格式中不允许使用“l”,但没有
--posix
函数的gawk就可以了。@EdMorton因此看起来像是符合posix的
printf
必须使用
%
来打印
%
。也就是说,任何想要打印的东西要算作POSIX必须禁止它。有趣!也可以做awk
{x+=$3好的一个!在我以前的眼里看起来有点太黑了,我更喜欢可读性更强的东西:DFair够了:)我本来打算发布几乎完全相同的答案,但你比我快了。唯一的区别是,我想我只是把它作为一个注释添加:)是的,我
$ awk '$3<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333
$ awk '$3<=10 {min10++} END {printf "%d %d %.2f%\n", min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.33%