如何更改文件中的第一列数据?

如何更改文件中的第一列数据?

我有.data包含具有列格式的数字表的文件:

m   x    y    z    vx    vy    vz

制表符分隔,深度为2000。文件名为initc.data.

我想更改文件整个第一列的值。

我尝试过使用以下命令:

awk -F '$1 == 0.05' initc

awk -F '{print $1, "0.05"}' initc

打开文件并为第一列分配值0.05。它们都打开awk但不运行或产生输出。

相关数据的一个示例是:

0.500000  0.500000  0.500000  0.500000  -1.500000  -1.500000  -1.500000
0.500000  0.567564  0.543674  0.536446  -1.500000  -1.500000  -1.500000
0.500000  0.454538  0.492286  0.501853  -1.500000  -1.500000  -1.500000
0.500000  0.574283  0.367439  0.668929  -1.500000  -1.500000  -1.500000

我能找到的最相关的问题是这个:文件中的相关数据

答案1

awk不具备像较新版本的sed.因此,您需要将输出定向到另一个文件,并从这个新创建的文件中获取它,如下所示:

awk '{$1="0.05"; print $0}' initc > initc.new && cat initc.new > initc

答案2

有趣的问题 - 您可以设置一个变量,然后使用 cut 来解析数据并在输出前面添加变量的内容 - 通过 awk。 (也许内置函数可以做到这一点......尽管上面的方法可以工作)。

x=$target
cat $file | cut -d" " -f2- | awk '{print info,$0 }' info=$target

相关内容