Jika saya menggunakan tanda kutip tunggal untuk melampirkan pernyataan tindakan awk, itu berfungsi seperti yang diharapkan:
$ dpkg -l | grep "linux\-[a-z]*\-" | awk {'print $2'}
linux-headers-3.13.0-27
linux-headers-3.13.0-27-generic
linux-headers-3.14.4-031404
linux-headers-3.14.4-031404-generic
linux-headers-generic
linux-image-3.13.0-27-generic
linux-image-3.14.4-031404-generic
linux-image-extra-3.13.0-27-generic
linux-image-generic
linux-libc-dev:i386
linux-sound-base
Tetapi jika saya menggunakan tanda kutip ganda untuk melampirkan mereka, ia mencetak seluruh baris bukannya kolom / bidang tertentu:
$ dpkg -l | grep "linux\-[a-z]*\-" | awk {"print $2"}
ii linux-headers-3.13.0-27 3.13.0-27.50 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-27-generic 3.13.0-27.50 i386 Linux kernel headers for version 3.13.0 on 32 bit x86 SMP
ii linux-headers-3.14.4-031404 3.14.4-031404.201405130853 all Header files related to Linux kernel version 3.14.4
ii linux-headers-3.14.4-031404-generic 3.14.4-031404.201405130853 i386 Linux kernel headers for version 3.14.4 on 32 bit x86 SMP
ii linux-headers-generic 3.13.0.27.33 i386 Generic Linux kernel headers
ii linux-image-3.13.0-27-generic 3.13.0-27.50 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
ii linux-image-3.14.4-031404-generic 3.14.4-031404.201405130853 i386 Linux kernel image for version 3.14.4 on 32 bit x86 SMP
ii linux-image-extra-3.13.0-27-generic 3.13.0-27.50 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
ii linux-image-generic 3.13.0.27.33 i386 Generic Linux kernel image
ii linux-libc-dev:i386 3.13.0-27.50 i386 Linux Kernel Headers for development
ii linux-sound-base 1.0.25+dfsg-0ubuntu4 all base package for ALSA and OSS sound systems
Kenapa gitu? Mengapa menggunakan tanda kutip ganda untuk melampirkan pernyataan tindakan awk menghasilkan hasil yang berbeda daripada ketika menggunakan tanda kutip tunggal untuk melampirkannya? Bisakah saya melakukan sesuatu sehingga menyertakan menggunakan tanda kutip ganda berfungsi seperti melampirkan menggunakan tanda kutip tunggal?
command-line
awk
Aditya
sumber
sumber
awk
harus berada di dalam{ ... }
.awk 'condition1{action1} condition2 {action2}'
,. Jika kita memberikan perintah awk seperti iniawk '{print $1}'
berarti tidak ada syarat yang diberikan.awk {'print $2'}
salah. Saya katakan, akan lebih baik untuk menghindari tanda kutip tunggal di dalam kawat gigi, karena itu akan membingungkan Anda.Jawaban:
Jika Anda menggunakan tanda kutip ganda yang
$2
diganti oleh shell sebelumawk
dipanggil. Seperti$2
biasanya berjalan kosongsama dengan berlari
Menggunakan
jika Anda ingin menggunakan tanda kutip ganda.
sumber
$2
bisa diperluas? (Karena, saya mencoba mempelajari berbagai hal, saya ingin memahami apa yang sedang terjadi) :)$2
?$2
biasanya variabel lingkungan kosong