8

我有这个完整的行(下面的 awk 中的 rpm 命令),我想从某些文件中提取出来,包括引号。当我尝试 grep 和 grep -F 时,我似乎无法获得正确的输出。我尝试从 grep 语句中删除部分行尾,它看起来像“!” 导致问题。我尝试将字符串用单引号括起来,但也没有运气。谢谢你。

rpm -qVa | awk '$2!="c" {print $0}'
4

2 回答 2

11

你有几个选择。

  1. 使用单引号 - 当您需要文字单引号时,只需去掉单引号,用反斜杠添加一个,然后返回:

    grep 'rpm -qVa | awk '\''$2!="c" {print $0}'\' filename

  2. 使用 POSIX 字符串:

    grep $'rpm -qVA | awk \'$2!="c" {print $0}\'' filename

  3. 使用不太具体的模式:

    grep 'rpm -qvA | awk .$2.="c" {print $0}.' filename

    或者,如果您检查了$2=="c"以及$2!="c",您可以执行以下操作:

    grep 'rpm -qvA | awk .$2[^=]="c" {print $0}.' filename

我会使用 POSIX 字符串,或者可能是普通的单引号选项 - 它具有在其他 shell 中工作的有争议的优势,比如dash.

于 2012-11-19T21:45:31.587 回答
-1

反斜杠应该可以解决问题

rpm -qVa | awk '\$2!="c" {print $0}'
于 2012-11-19T20:43:39.633 回答