Bash

如何更改文件中的第一列數據?

  • April 14, 2019

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

我能找到的最接近的相關問題是:文件中的相關數據

awk沒有能力像較新版本的sed. 因此,您需要將輸出定向到不同的文件並從這個新創建的文件中取回,如下所示:

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

有趣的問題 - 您可以設置一個變數,然後使用 cut 來解析數據並在輸出前加上變數的內容 - 通過 awk。(也許存在內置函式可以做到這一點..儘管上述方法可行)。

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

引用自:https://unix.stackexchange.com/questions/261058