Grep

如何避免使用 -

  • June 27, 2019

我正在嘗試使用 grep 從文件中僅獲取匹配的行。問題是,例如,當我使用以下表達式時:

grep -w AFFX-KIT-000088 textfile

它將返回:

AFFX-KIT-000088-A
AFFX-KIT-000088

但是,我只想要完全匹配的表達式 AFFX-KIT-000088。我已經嘗試過 -F -E 並引用了。我需要 grep 行的文本文件非常大,我無法修改它(這也意味著我需要一個不涉及很多步驟的答案,因為它需要永遠處理)。

注意

該文件實際上非常大並且有很多列(不僅僅是我用於 grep 的列)。

grep -x 'AFFX-KIT-000088' file

-x強制匹​​配一條完整線。

您可能還想-F在匹配字元串時添加,而不是正則表達式。這可能會加快操作。

-w選項在這裡不起作用,因為-它不是“單詞字元”。因此,子字元串AFFX-KIT-000088inAFFX-KIT-000088-A是一個完整的單詞。

“單詞字元”是匹配的字元[[:alnum:]_],即字母數字字元和下劃線。


在多列數據中,假設製表符分隔的欄位和第 3 列中的匹配:

awk -F '\t' '$3 == "AFFX-KIT-000088"' file

也就是說,將第三個欄位與特定字元串進行比較。

當這樣的條件缺少關聯的操作時,預設操作是在條件為true時列印整個輸入記錄。如果您只想列印欄位的數據:

awk -F '\t' '$3 == "AFFX-KIT-000088" { print $3 }' file

引用自:https://unix.stackexchange.com/questions/526783