首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >awk不在bash -c中工作"somecommand \ awk '{print $2}'“

问awk不在bash -c中工作"somecommand \ awk '{print $2}'“
EN

Stack Overflow用户
提问于 2016-11-10 17:12:32
回答 1查看 2.8K关注 0票数 3

此命令如预期的那样工作:

代码语言:javascript
复制
(dpkg -l | egrep "linux.+3.8.0.*44" | awk '{print $2}')
linux-generic-lts-raring
linux-headers-3.8.0-44
linux-headers-3.8.0-44-generic
linux-headers-generic-lts-raring
linux-image-3.8.0-44-generic
linux-image-generic-lts-raring

但是,当我使用bash -c运行它时,它不起作用:

代码语言:javascript
复制
bash -c "(dpkg -l | egrep "linux.+3.8.0.*44" | awk '{print $2}')"
ii  linux-generic-lts-raring         3.8.0.44.44                       Generic     Linux kernel image and headers
ii  linux-headers-3.8.0-44           3.8.0-44.66~precise1              Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-44-generic   3.8.0-44.66~precise1              Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-generic-lts-raring 3.8.0.44.44                       Generic Linux kernel headers
ii  linux-image-3.8.0-44-generic     3.8.0-44.66~precise1              Linux kernel image for version 3.8.0 on 64 bit x86 SMP
ii  linux-image-generic-lts-raring   3.8.0.44.44                       Generic Linux kernel image

我不知道为什么。就好像管子坏了一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-10 17:17:30

因为您是双引号,所以$2由shell展开,而不是字面上传递给awk。默认情况下,print在awk中打印$0,即。整个输入行,所以如果它被扩展为一个空值,就会出现问题。

代码语言:javascript
复制
bash -c "(dpkg -l | egrep 'linux.+3.8.0.*44' | awk '{print \$2}')"

顺便说一句--单独使用grep和awk是没有意义的。

代码语言:javascript
复制
bash -c "dpkg -l | awk '/linux.+3.8.0.*44/ { print \$2 }'"

如果您的外壳本身是bash,那么可以使用$''作为提供文字字符串的替代方法:

代码语言:javascript
复制
# $'' only works with bash, ksh, etc., but won't interpret $2, and lets
# you pass literal quotes
bash -c $'dpkg -l | awk \'/linux.+3[.]8[.]0.*44/ { print $2 }\''

相比之下,如果您的外壳是基线POSIX,包括单引号中的单引号,则会变得更加复杂。

代码语言:javascript
复制
bash -c 'dpkg -l | awk '"'"'/linux.+3[.]8[.]0.*44/ { print $2 }'"'"''
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40533400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档