如何在 shell 脚本的每个 awk 命令中实现回车或换行符,以便每个命令的输出与下一个命令的输出分开?
也许我需要更多的规范。我有两个 awk 命令,如下所列:
awk {print $1, $2}, awk 命令 1, 输出:
John Bender
Bohn Jender
Jen Bondher
Run Code Online (Sandbox Code Playgroud)
awk '{print $3, $4}',命令 2,输出:
AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543
Run Code Online (Sandbox Code Playgroud)
当在 shell 脚本中组合并运行时./<testscript>.sh <textfile>,命令行显然输出:
John Bender
Bohn Jender
Jen Bondher
AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543
Run Code Online (Sandbox Code Playgroud)
因为我想要换行附加 PER awk 命令,所以我希望输出看起来像:
John Bender
Bohn Jender
Jen Bondher
AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543
Run Code Online (Sandbox Code Playgroud)
以前尝试附加“\n”的结果是:
John Bender
Bohn Jender
Jen Bondher
AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543
Run Code Online (Sandbox Code Playgroud)
..这当然是不需要的。
当您从 shell 脚本内部运行时,只需echo在每个awk命令之后添加,即在您想要获得单独输出的命令之间。
echo添加换行符。例如:
awk '{print $1 $2}' file.txt
echo
awk '{print $3, $4}' file.txt
Run Code Online (Sandbox Code Playgroud)
原答案:
附加printf "\n"在每个awk动作的末尾{}。
printf "\n" 将打印一个换行符。
例子:
% awk '{print $1; printf "\n"}' <<<$'foo bar\nspam egg'
foo
spam
Run Code Online (Sandbox Code Playgroud)