What I want is to get the reversed string of current line, I tried to use the rev command in the AWK but cannot get the current result.
$ cat myfile.txt
abcde
$ cat myfile.txt | awk '{cmd="echo "$0"|rev"; cmd | getline result; print "result="$result; close(cmd);}'
abcde
I want to get edcba
in the output.
I know there are some other ways to get the reversed string like $ cat myfile.txt | exec 'rev'
. Using AWK here is because there are some other processes to do.
Did I miss anything?
Why not
or if you are not using
bash
/ksh93
:---
Or if your awk supports the empty FS option:
The only problem is with your print statement. Use
print "result=" result;
(No
$
onresult
)try this:
awk '{ cmd="rev"; print $0 | cmd; close(cmd) }' myfile.txt
The system function allows the user to execute operating system commands and then return to the awk program. The system function executes the command given by the string command. It returns, as its value, the status returned by the command that was executed.
Calling the
rev
command from awk is very inefficient as it creates a sub-process for each line processed. I think you should define arev
function in awk: