awk '{print $1+0.45 " " $2 " " $3 }' positionXYZ > positionX0.45YZ
はどういう意味ですか?最初のファイルの行を変更して、新しいデータを2番目のファイルに入れるという意味ですか?
承認された回答:
これを分解しましょう。 awk '{foo}' file
式foo
を適用します file
の各行に 結果を端末に出力します(標準出力)。 awk
入力行を空白で分割し(デフォルト)、各フィールドを$1
として保存します 、$2
など
したがって、実行している実際の式は、各入力行を読み取り、最初のフィールドの値に0.45を追加してから、そのフィールドと2番目と3番目のフィールドを出力することを意味します。これは簡単な例で最も簡単に説明できます:
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt
10.45 20 30
50.45 60 70
ご覧のとおり、awk
スクリプトは、各行の最初のフィールドに0.45を追加し、2番目と3番目のフィールドと一緒に印刷しました。 $4
を印刷するように指示しなかったため、4番目は無視されました。 。
次のビットはawk
とは何の関係もありません 、>
シンボルは出力リダイレクト用であり、シェル(bashまたはzshまたは使用しているもの)によって使用されます。一般的に、command > file
command
の出力を保存します ファイル内file
内容を上書きする ファイルが存在する場合はファイルを作成し、存在しない場合は作成します。
すべてをまとめる:
$ ls
file.txt
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt > file2.txt
$ ls
file2.txt file.txt
$ cat file2.txt
10.45 20 30
50.45 60 70