【发布时间】:2020-04-29 12:45:19
【问题描述】:
你好,我有以下 awk 脚本:
#!/bin/awk -f
{for(i=4;i<=7;i++) j+=$i; print "Student",NR",",$1,$2",",j/4; j=0}
我想将输出附加到一个新文件 (newfile.txt)。
【问题讨论】:
你好,我有以下 awk 脚本:
#!/bin/awk -f
{for(i=4;i<=7;i++) j+=$i; print "Student",NR",",$1,$2",",j/4; j=0}
我想将输出附加到一个新文件 (newfile.txt)。
【问题讨论】:
请您尝试以下操作。在awk 代码本身中提及输出文件的位置。
{for(i=4;i<=7;i++) j+=$i; print "Student" OFS NR",",$1,$2"," OFS j/4 >> (output_file); j=0}
或者第二种方式是当您运行 awk 代码时,其中 script 是您为运行 awk 程序而调用的脚本名称,例如 -->
./script >> output_file
如果您想运行 awk 单行程序以将输出输出到输出文件中,请尝试以下操作。
awk -v output_file="Output.txt" '{for(i=4;i<=7;i++) j+=$i; print "Student" OFS NR",",$1,$2"," OFS j/4 >> (output_file); j=0}' Input_file
在上面的代码中,我创建了一个名为 output_file 的变量,您也可以根据自己的意愿保留它的值。
【讨论】:
不要使用 shebang 从 shell 脚本调用 awk,因为它会剥夺您根据每个(shell 或 awk)最擅长的功能来分离功能的能力。让你的 shell 脚本看起来像这样(使用你用于 shebang 的任何 shell):
#!/bin/env bash
awk '
{for(i=4;i<=7;i++) j+=$i; print "Student",NR",",$1,$2",",j/4; j=0}
' "$@" >> newfile.txt
【讨论】: