GNU/Linux >> Belajar Linux >  >> Linux

Apa Itu Awk ‘{print $1+0.45 “ ” $2 “ ” $3 }’ File1> File2?

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

Linux
  1. Apa nomor inode di Linux?

  2. Apa yang Dihitung Sebagai Modifikasi atau Perubahan File?

  3. Apa yang Membuat Grep Mempertimbangkan File Menjadi Biner?

  1. Bagaimana Cara Cat File Dari Awk?

  2. Apa Penyebab File Kehilangan Izin?

  3. Awk Dari Baris Yang Berbeda?

  1. Apa itu Exec 3?

  2. Apa itu Protokol Transfer File (FTP)

  3. Apa itu file .so.2?