2012-11-19 101 views
3

我有我想從某些文件,其中包括引號用grep出這個全系列(rpm命令到下面AWK)。當我嘗試grep和grep -F時,我似乎無法獲得正確的輸出。我試圖從grep語句中刪除部分尾行,它看起來像「!」造成問題。我試圖用單引號包裝字符串,也沒有運氣。謝謝。在grep中轉義感嘆號?

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

完整添加grep行示例可能會有幫助。我想它是這樣的:'grep'rpm -qVa | awk'$ 2!=「c」{print $ 0}「' – bonsaiviking

+0

如果您正在收到」event not found「,請關閉Bash中的'histexpand'選項。但是,IIRC單引號應該防止這種情況發生。 – tripleee

回答

-1

反斜槓應該做的伎倆

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

不幸的是,這是行不通的。 –

7
  1. 使用單引號 - 當你需要一個單引號,只是下降了單引號,把一個在同一個反斜槓,和然後回去:

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

  2. 使用雙現狀TES不僅反斜槓逃脫感嘆號,但一切否則將得到由殼代替:

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

  3. 使用POSIX字符串:

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

  4. 使用較少特定模式:

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

    或者,如果你有$2=="c"檢查以及$2!="c",你可以做這樣的事情:

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

我會去的POSIX串,或者也許是普通單引號選項 - 這在其他炮彈中有着可爭議的優勢,如dash