小编Swa*_*ows的帖子

使用awk从stdin或文件中读取

所以这是到目前为止的代码:

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)

但似乎什么都无法正常工作...

有任何想法吗?

unix bash shell awk

2
推荐指数
1
解决办法
3611
查看次数

标签 统计

awk ×1

bash ×1

shell ×1

unix ×1