我有一個看起來像這樣的文件。使用grep進行匹配時,搜索字符串中的空格。
10gs+VWW+A+210 10gs-ASN-A-206 0.616667 0.094872
10gs+VWW+A+210 10gs-GLU-A-31- 0.363077 0.151282
10gs+VWW+A+210 10gs-GLY-A-207 0.602564 0.060256
10gs+VWW+A+210 10gs-LEU-A-132 0.378151 0.288462
10gs+VWW+A+210 10gs-LEU-A-60- 0.376812 0.133333
10gs+VWW+A+210 11ba-GLU-A-2-z 0.333333 0.065385
10gs+VWW+A+210 11ba-SER-A-15- 0.400000 0.053846
10gs+VWW+A+210 11ba-GLU-A-2-z 0.333333 0.065385
10gs+VWW+A+210 11ba-SER-A-15- 0.400000 0.053846
17gs+VWW+A+210 11ba-SER-A-77- 0.415789 0.101282
15gs+VWW+A+210 11ba-VAL-A-47- 0.413793 0.215385
我想刷出匹配模式[包含其中的空白]的行。假設模式是:'10gs + VWW + A + 210 11ba-'
當我給出這樣的模式作爲grep的參數時,我得到了正確的匹配行。然而,當我想要從一個文件中匹配多個模式(如pattern.txt
)時,就會出現問題,該文件包含每行上所有這些模式的列表。
pattern.txt
看起來是這樣的:
10GS + VWW + A + 210個11ba-
10GS + VWW + A + 210 10gs-
當我使用這樣的shell腳本:
for i in `cat pattern.txt`; do grep -e "^$i" bigfile.txt ; done
命令分別與分別和11ba相匹配。我想匹配整個事物(用空格隔開),即10gs + VWW + A + 210 11ba匹配,而不是分開的兩個字符串。
如何修改現有的shell腳本來克服搜索字符串中的空格字符?
此外,由於我匹配這些字符串集的文件很大,大約爲50GB。 因此,內存高效的解決方案是值得歡迎的。 謝謝。