所以这是到目前为止的代码:
awk '{++a[length()]} END{for (i in a) print i, a[i]}' <$1 | sort -n
Run Code Online (Sandbox Code Playgroud)
它从文本文件中读取行的长度,然后输出行的长度,然后输出多少行具有相同的长度。
所以输入:
hello
guys
hows
it
going
Run Code Online (Sandbox Code Playgroud)
将输出:
2 1
4 2
5 2
Run Code Online (Sandbox Code Playgroud)
我希望它也能够具有stdin,因此我将能够运行命令“ ./script filename.txt”,还能够使用标准输入来运行命令。
有什么办法可以通过while循环来完成吗?我试图做类似的事情:
while read line
do
awk '{++a[length()]} END{for (i in a) print i, a[i]}' <${1:-/dev/stdin} | sort -n
done <${1:-/dev/stdin}
Run Code Online (Sandbox Code Playgroud)
但似乎什么都无法正常工作...
有任何想法吗?