我有.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