【发布时间】:2017-04-13 04:47:44
【问题描述】:
到目前为止,这是我的代码:
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
我希望它也可以有标准输入,这样我就可以运行命令“./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}
但似乎没有任何工作正常......
有什么想法吗?
【问题讨论】:
-
如果您告诉我们什么而不是如何发布示例数据以及预期输出,我们可能会为您提供帮助。如果您想自己解决它并想同时从标准输入和带有awk的文件中读取,请使用
getline作为文件。祝你好运。 -
你在说什么?你已经在从标准输入读取了!