Apa awk '{print $1+0.45 " " $2 " " $3 }' positionXYZ > positionX0.45YZ
maksudnya? Apakah itu berarti mengubah satu baris di file pertama dan memasukkan data baru ke dalam yang kedua?
Jawaban yang Diterima:
Mari kita uraikan ini. awk '{foo}' file
akan menerapkan ekspresi foo
ke setiap baris file
dan cetak hasilnya ke terminal (output standar). awk
membagi baris inputnya pada spasi putih (secara default) dan menyimpan setiap bidang sebagai $1
, $2
dll.
Jadi, ekspresi aktual yang Anda jalankan berarti:baca setiap baris input, tambahkan 0,45 ke nilai bidang pertama dan kemudian cetak bidang itu serta yang kedua dan ketiga. Ini paling mudah dijelaskan dengan contoh sederhana:
$ 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
Jadi, seperti yang Anda lihat, awk
skrip menambahkan 0,45 ke bidang pertama dari setiap baris dan kemudian mencetaknya bersama dengan yang kedua dan ketiga. Yang keempat diabaikan karena Anda tidak menyuruhnya mencetak $4
.
Bit berikutnya tidak ada hubungannya dengan awk
, >
simbol untuk pengalihan output dan digunakan oleh Shell (bash atau zsh atau apa pun yang Anda gunakan). Secara umum command > file
akan menyimpan output dari command
dalam file file
menimpa konten file jika ada dan membuatnya jika tidak.
Menyatukan semuanya:
$ 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