我想打印仅修改了一些特定列的输入列 ASCII 数据文件。如果我使用 awk 修改列(例如:$NF=99),当我最终给出“print $0”命令时,它会正确打印输出,但其他列的所有空格填充、格式等都消失了。(它们基本上都被 OFS 取代了)。
有没有办法让 awk 打印完全相同的输入,只在指定的列中进行更改?我需要将此输出提供给另一个具有非常严格的读取格式的 fortran 代码。所以我不能改变行的格式。
如果 awk 不是我应该用于此目的的软件,您有什么建议?
更新:示例:
连续输入条目。
0 0 0 0 0 0 0 1936 24170 2536 1987 24094 2543 2037 24153 2550 2088 24202 2557 27 24 24.5 10000.0 0.31 0.0 10000.0 0.0 0.0 0.0 0.65
我想将该条目转换为
0 0 0 0 0 0 0 1936 24170 2536 1987 24094 2543 2037 24153 2550 2088 24202 2557 27 24 24.5 10000.0 10000.0 10000.0 10000.0 10000.0 10000.0 10000.0 10000.0
重要的部分是保持其他列的间距和位置不变。
我可以做的最接近的事情是完成我的任务是以下命令。
gawk '{output=$0;for (i=0;i<8;i++){output=substr(output,0,97+8*i-1)"10000.0"substr(output, 97+8*(i+1)-1)}; print output}'