精確模式的grep行我有這樣的腳本:在第一列
while read line; do grep $line my_annot | awk '{print $2}' ; done < foo.txt
但它不會返回我想要的。
問題是,在foo.txt中,當我有例如Contig1時,腳本將返回文件my_annot的第2列,即使發現的模式是Contig12而非僅Contig1!
我在$模式結束時嘗試了$,但問題在於它對應於行尾,而我搜索的這個表達式在列1中,因此不是行尾。
我該如何判斷搜索此EXACT模式,而不是那些包含此模式的模式?
#######回答:我的腳本是:
annot='/home/mu/myannot'
awk 'NR == FNR { line[$0]; next } $1 in line { print $2 }' $1 $annot > out
它可以讓我放棄,我想找到的第一個參數表達的名單做./myscript.sh MYLIST
然後我將結果重定向到一個名爲out的文件中。
謝謝你們!
你是否試過在'^'和'$'中包裝正則表達式? – Bohemian
爲什麼不只是'awk'$ 1 ==「Contig1」{print $ 2}'foo.txt'而不是所有的循環和grepping? – JNevill
你不需要'grep -w'或'grep --word-regexp'嗎? – Carcamano