使用排序函数会出现管道“|”错误

问题描述 投票:0回答:1

来自已接受的答案此处

这个

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

管道好像有问题。我该如何解决这个问题?

sorting awk
1个回答
0
投票

使用 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
© www.soinside.com 2019 - 2024. All rights reserved.