ถ้าฉันใช้อัญประกาศเดี่ยวเพื่อแนบคำสั่งการกระทำของ awk มันทำงานได้ตามที่คาดไว้:
$ 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
แต่ถ้าฉันใช้อัญประกาศล้อมรอบพวกเขามันจะพิมพ์ทั้งบรรทัดแทนที่จะเป็นคอลัมน์ / ฟิลด์เฉพาะ:
$ 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
ทำไมถึงเป็นเช่นนั้น? เหตุใดการใช้เครื่องหมายคำพูดคู่เพื่อรวมคำสั่งการกระทำของ awk ให้ผลลัพธ์ที่แตกต่างกว่าเมื่อใช้เครื่องหมายคำพูดเดี่ยวเพื่อล้อมรอบคำสั่งนั้น ฉันสามารถทำบางอย่างเพื่อให้การใช้เครื่องหมายคำพูดคู่ล้อมรอบเหมือนการใช้เครื่องหมายคำพูดเดี่ยวได้หรือไม่
ลองใช้คำพูดเดียวนอกวงเล็บปีกกา
—
Avinash Raj
@AvinashRaj ที่จะผลิตไวยากรณ์ผิดพลาดทั้งหมดงบดำเนินการในควรจะอยู่ใน
—
Aditya
awk
{ ... }
ใครบอกว่ามันจะสร้างข้อผิดพลาดทางไวยากรณ์? Awk sysntax จะเป็นอย่างนี้,
—
Avinash Raj
awk 'condition1{action1} condition2 {action2}'
. หากเราให้คำสั่ง awk เช่นนี้awk '{print $1}'
หมายความว่าไม่มีการกำหนดเงื่อนไข
ฉันไม่ได้บอกว่าคำสั่งของคุณ
—
Avinash Raj
awk {'print $2'}
ผิด ฉันพูดว่าจะเป็นการดีกว่าถ้าคุณหลีกเลี่ยงเครื่องหมายคำพูดเดี่ยวในวงเล็บปีกกาเพราะมันจะทำให้คุณสับสน
@AvinashRaj โอ้ .. ฉันคิดว่าคุณหมายถึงอย่างอื่น
—
Aditya