Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在grep中逃离感叹号?_Linux_Bash_Grep - Fatal编程技术网

Linux 在grep中逃离感叹号?

Linux 在grep中逃离感叹号?,linux,bash,grep,Linux,Bash,Grep,我有一行完整的代码(rpm命令在下面的awk中),我想从某些文件中删除它,包括引号。当我尝试grep和grep-F时,我似乎无法获得正确的输出。我尝试从grep语句中删除部分行尾,似乎是“!”导致了问题。我试着用单引号将字符串括起来,但也没有运气。多谢各位 rpm -qVa | awk '$2!="c" {print $0}' 反斜杠就可以了 rpm -qVa | awk '\$2!="c" {print $0}' 你有几个选择 使用单引号-当您需要文字单引号时,只需从单引号中删除,添加带反

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

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

反斜杠就可以了

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

你有几个选择

  • 使用单引号-当您需要文字单引号时,只需从单引号中删除,添加带反斜杠的单引号,然后返回:

    grep'rpm-qVa|awk'\''2美元=“c”{print$0}'\'文件名

  • 使用POSIX字符串:

    grep$'rpm-qVA | awk\'$2=“c”{print$0}\''文件名

  • 使用不太具体的模式:

    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

    添加一个完整的grep行示例可能会有所帮助。我想象它是这样的:
    grep“rpm-qVa | awk'$2!=“c”{print$0}”
    如果您得到“未找到事件”,请关闭Bash中的
    histexpand
    选项。不过,IIRC单引号应该防止出现这种情况。