我有这个完整的行(下面是awk的rpm命令),我想从某些文件中删除,包括引号.当我尝试grep和grep -F时,我似乎无法获得正确的输出.我试着从grep语句中删除部分尾行,看起来像是"!" 造成问题.我尝试用单引号包装字符串,也没有运气.谢谢.
rpm -qVa | awk '$2!="c" {print $0}'
Run Code Online (Sandbox Code Playgroud)
使用单引号 - 当您需要单引号时,只需删除单引号,使用反斜杠放入,然后返回:
grep 'rpm -qVa | awk '\''$2!="c" {print $0}'\' filename
使用双引号和反斜杠转义不仅是感叹号,还有其他一些本来会被shell取代的东西:
grep "rpm -qVa | awk '\$2\!=\"c\" {print \$0}'" filename
使用POSIX字符串:
grep $'rpm -qVA | awk \'$2!="c" {print $0}\'' filename
使用不太具体的模式:
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.
Cur*_*ind -1
反斜杠应该可以解决问题
rpm -qVa | awk '\$2!="c" {print $0}'
Run Code Online (Sandbox Code Playgroud)