在AWK中使用管道

Aid*_*idy 4 awk pipe getline

我想要的是得到当前行的反向字符串,我试图在AWK中使用rev命令但是无法获得当前结果.

$ cat myfile.txt
abcde

$ cat myfile.txt | awk '{cmd="echo "$0"|rev"; cmd | getline result;  print "result="$result; close(cmd);}'
abcde
Run Code Online (Sandbox Code Playgroud)

我想进入edcba输出.

我知道还有其他一些方法可以让反转的字符串像$ cat myfile.txt | exec 'rev'.在这里使用AWK是因为还有其他一些过程要做.

我错过了什么吗?

Chr*_*our 5

系统功能允许用户执行操作系统命令,然后返回到awk程序.系统函数执行string命令给出的命令.它返回由执行的命令返回的状态作为其值.

$ cat file
abcde

$ rev file
edcba

$ awk '{system("echo "$0"|rev")}' file
edcba

# Or using a 'here string'
$ awk '{system("rev<<<"$0)}' file
edcba

$ awk '{printf "Result: ";system("echo "$0"|rev")}' file
Result: edcba

# Or using a 'here string'
$ awk '{printf "Result: ";system("rev<<<"$0)}' file
Result: edcba
Run Code Online (Sandbox Code Playgroud)


Joe*_*Sch 5

尝试这个:

awk '{ cmd="rev"; print $0 | cmd; close(cmd) }' myfile.txt