一重引用符を使用して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 14年
@AvinashRaj構文エラーが発生します。すべてのアクションステートメントは
—
Aditya 2014年
awk
内にある必要があります{ ... }
。
構文エラーが発生すると誰が言ったのですか?Awk sysntaxは次のようになります
—
Avinash Raj
awk 'condition1{action1} condition2 {action2}'
。このようにawkコマンドawk '{print $1}'
を指定すると、条件が指定されていないことになります。
私はあなたのコマンド
—
Avinash Raj 14年
awk {'print $2'}
が間違っているとは言いませんでした。私は、あなたを混乱させるので、中括弧の中に一重引用符を避ける方が良いだろうと述べました。
@AvinashRajああ。
—
Aditya 2014年