awk如何将unix命令的结果作为参数?

tri*_*ons 3 bash shell awk

假设有一个带有制表符分隔字段的输入文件,第一个字段是整数

1 abc
1 def
1 ghi
1 lalala
1 heyhey
2 ahb
2 bbh
3 chch
3 chchch
3 oiohho
3 nonon
3 halal
3 whatever
Run Code Online (Sandbox Code Playgroud)

首先,我需要计算第一个字段中唯一值的计数,即:

5 for 1, 2 for 2, and 6 for 3
Run Code Online (Sandbox Code Playgroud)

然后我需要找到这些计数的最大值,在这种情况下,它是6.

现在我需要将"6"传递给另一个awk脚本作为参数.

我知道我可以使用下面的命令来获取计数列表:

cut -f1 input.txt | sort | uniq -c | awk -F ' ' '{print $1}' | sort 
Run Code Online (Sandbox Code Playgroud)

但是我如何获得第一个计数并将其作为参数传递给下一个awk命令而不是作为输入文件?

use*_*own 5

这对于awk来说并不是特别的.

程序可以从stdin读取,然后您可以使用管道传递输入:

prg1 | prg2 
Run Code Online (Sandbox Code Playgroud)

或者你的程序期望输入作为参数,然后你使用

prg2 $(prg1) 
Run Code Online (Sandbox Code Playgroud)

请注意,在两种情况下,prg1都在prg2之前处理.

有些程序允许两种可能性,而大量数据很少作为参数传递.