DNA*_*ash 3 osx awk text-processing files
我有一个输入 File1,它看起来像这样:
A,22,1,2,3,4,5
G,26,5,6,7
X,28,10,20,10
Run Code Online (Sandbox Code Playgroud)
我想在保持文件结构的同时对列 3-end 应用一个方程。例如,如果我想要使用的方程乘以 2,我正在寻找输出:
A,22,2,4,6,8,10
G,26,10,12,14
X,28,20,40,20
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令执行此操作:
awk -F ',' '{for(i=1; i<=NF; i++) if (i >= 3)
print 2*$i
else
print $i }' File1
Run Code Online (Sandbox Code Playgroud)
这提供了正确的输出,但摆脱了所有文件结构。如果使用我想要使用的实际方程是:2*(2*($i-1)+1)
非常感谢伴随解决方案的任何解释,因为我对此仍然很陌生!
您只需要设置输出字段分隔符 ( OFS
),例如:
awk '{ for (i=3; i<=NF; i++) $i*=2 } 1' FS=, OFS=, infile
Run Code Online (Sandbox Code Playgroud)
或使用您的公式:
awk '{ for (i=3; i<=NF; i++) $i = 2*(2*($i-1)+1) } 1' FS=, OFS=, infile
Run Code Online (Sandbox Code Playgroud)
输出:
awk '{ for (i=3; i<=NF; i++) $i*=2 } 1' FS=, OFS=, infile
Run Code Online (Sandbox Code Playgroud)
将1
在脚本的末尾是一个短手{ print $0 }