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