以下是我的目前的代码:
awk '{++a[length()]} END{for (i in a) print i, a[i]}' <$1 | sort -n
这是一个从文本文件中读取行长度并输出行长度及相同长度行数的程序。
输入:
hello
guys
hows
it
going
将输出:
2 1
4 2
5 2
我希望它也能够使用标准输入(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}
但是似乎什么都没有正常工作... 你有什么想法吗?
getline
读取文件。祝好运。 - James Brown