Nếu tôi sử dụng dấu ngoặc đơn để kèm theo tuyên bố hành động của awk, nó sẽ hoạt động như mong đợi:
$ 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
Nhưng nếu tôi sử dụng dấu ngoặc kép để đặt chúng, nó sẽ in toàn bộ dòng thay vì cột / trường cụ thể:
$ 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
Tại sao nó như vậy? Tại sao sử dụng dấu ngoặc kép để gửi kèm theo tuyên bố hành động của awk tạo ra kết quả khác với khi sử dụng dấu ngoặc đơn để gửi chúng? Tôi có thể làm một cái gì đó để kèm theo sử dụng dấu ngoặc kép hoạt động như bao quanh bằng dấu ngoặc đơn không?
Cố gắng sử dụng dấu ngoặc đơn bên ngoài dấu ngoặc nhọn.
—
Avinash Raj
@AvinashRaj Điều đó sẽ tạo ra lỗi cú pháp, tất cả các câu lệnh hành động
—
Aditya
awk
phải nằm trong { ... }
.
Ai nói nó sẽ tạo ra lỗi cú pháp? Awk sysntax sẽ như thế này
—
Avinash Raj
awk 'condition1{action1} condition2 {action2}'
. Nếu chúng ta đưa ra lệnh awk như thế này awk '{print $1}'
có nghĩa là không có điều kiện nào được đưa ra.
Tôi không nói lệnh của bạn
—
Avinash Raj
awk {'print $2'}
là sai. Tôi đã nói, sẽ tốt hơn nếu tránh các trích dẫn đơn trong niềng răng, bởi vì nó sẽ làm bạn bối rối.
@AvinashRaj Oh .. Tôi nghĩ bạn có ý gì khác.
—
Aditya