来自已接受的答案此处
这个
awk '{for(i=1;i<=NF;i++) a[$i]++} END {for(k in a) print k,a[k]}' testfile | sort -k 2 -n
当我从命令行输入它时工作正常。
但是当我尝试从命令文件运行它时,我无法使其工作。
我的源文件是
voleybol.org
我将其输入到
command.awk
{gsub(/[[:punct:]]/, "")} {for(i=1;i<=NF;i++) a[$i]++} END {for(k in a) print k,a[k]} | sort sort -k 2 -n
然后我从命令行运行:
awk -f command.awk voleybol.org
但这给出了错误
Syntax error at source line 1 source file command.awk
context is
{gsub(/[[:punct:]]/, "")} {for(i=1;i<=NF;i++) a[$i]++} END {for(k in a) print k,a[k]} >>> | <<< sort sort -k 2 -n
awk: bailing out at source line 1 source file command.awk
管道好像有问题。我该如何解决这个问题?
使用 GNU AWK
$ awk -v IGNORECASE=1 '
{ for(i=1; i<=NF; i++) a[$i]++ }
END {
n=asorti(a,b)
for(i=1; i<=n; i++) print b[i],a[b[i]]
print ""
}
' /tmp/file
a 1
be 1
file 2
for 1
is 1
sample 1
testing 1
this 2
used 1
will 1