首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个单引号短语中使用awk的单引号?

如何在另一个单引号短语中使用awk的单引号?
EN

Unix & Linux用户
提问于 2019-07-03 15:53:36
回答 2查看 1.1K关注 0票数 1

背景

我正在运行一个命令来驱散多个主机上的进程。以下是命令:

execAll -m "$HOSTS" 'hostname; ps -ef | grep build | grep -v grep; ipcs | grep 666'

尝试

现在,我想将命令的ipcs | grep 666部分输送到awk '{print $2}',然后传输到kill -9,以杀死所有活动进程。以下是我尝试过的:

execAll -m "$HOSTS" 'hostname; ps -ef | grep build | grep -v grep; ipcs | grep 666 | awk '{print $2}' | xargs kill -9'

然而,awk需要单引号来运行它的参数,上面的命令也需要单引号。我得到的错误是Missing }.,我将其归因于上面的引用问题。

问题

在上述情况下,我如何成功地运行awk并终止进程?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-07-03 16:13:02

但是,awk需要单引号来运行它的参数,

不怎么有意思。这些引号只是一个shell结构,它们告诉shell不要展开美元符号,而是将字符串保持在一起,而不是在空格上断开。awk看到的只是字符串{print $2},它不知道它是如何生成的。你可以用双引号和反斜杠转义来达到同样的效果.所有这些都应是相同的:

代码语言:javascript
复制
awk '{print $2}'
awk "{print \$2}"
awk {print\ \$2}

后两者适合在单引号字符串内,没有问题。

或者,如果您的shell是Bash或其他支持ANSI引用的,则可以将外部引号更改为,然后用反斜杠转义单引号:

代码语言:javascript
复制
echo 顾名思义,其他C风格的转义(例如\n、\t、\"、\'、\\)也在中工作。..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7顾名思义,其他C风格的转义(例如D8、D9、D10、D11、D12)也在D13中工作。..',然后用反斜杠转义单引号:A7顾名思义,其他C风格的转义(例如D8、D9、D10、D11、D12)也在D13中工作。..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7顾名思义,其他C风格的转义(例如D8、D9、D10、D11、D12)也在D13中工作。do or don\'t'

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..'中工作。..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

do or don\'t'

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

..',则可以将外部引号更改为D6,然后用反斜杠转义单引号:A7

顾名思义,其他C风格的转义(例如D8D9D10D11D12)也在D13中工作。

票数 3
EN

Unix & Linux用户

发布于 2019-07-03 16:12:33

Awk本身并不“需要”单引号。您只需要确保脚本主体包含您希望它包含的内容。如果您转义$,就会发现双引号:

代码语言:javascript
复制
execAll ... '...; ipcs | awk "/666/ {print \$2}" | xargs ...'
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/528238

复制
相关文章

相似问题

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