我已經耗盡在線搜索,試圖找出如何執行此操作。從部分匹配其他文件中列出的關鍵字的文本文件中提取所有行
我有製表符分隔的文件searchfile.txt
有兩列和> 200行。樣品在這裏:
A(H1N1)/SWINE/COTES-DARMOR/388/2009 X? 4.28144245
A(H1N2)/SWINE/SCOTLAND/410440/1994 X? 7.25878836
A(H1)/SWINE/ENGLAND/117316/1986 X? 3.305392038
A(H1)/SWINE/ENGLAND/438207/1994 X? 7.66078717
我還有一個文件keywords.txt
有一些關鍵字,在searchfile.txt
部分匹配的ID:
ENGLAND/117316
DARMOR/388
438207
我想提取searchfile.txt
包含在keywords.txt
使用其他類似問題的解決方案我試過了:
grep -F -f keywords.txt searchfile.txt > selected.txt
grep -f keywords.txt searchfile.txt
awk 'FNR==NR {a[$0];next} ($NF in a)' keywords.txt searchfile.txt > result.txt
我也得到了一部分的方式有這個python
腳本:
infile = r"/path/to/searchfile.txt"
results = []
to_keep = ["ENGLAND/117316",
"DARMOR/388",
"438207"]
with open(infile) as f:
f = f.readlines()
for line in f:
for phrase in to_keep:
if phrase in line:
results.append(line)
break
print(results)
,並將其輸出這個終端窗口:
[
'A(H1N1)/SWINE/COTES-DARMOR/388/2009 X?\t4.28144245\n',
'A(H1)/SWINE/ENGLAND/117316/1986 X?\t3.305392038\n',
'A(H1)/SWINE/ENGLAND/438207/1994 X?\t7.66078717\n'
]
有沒有辦法來
一)修改這個腳本從keywords.txt
這樣的文件中讀取並輸出行到另一個文件? (我的Python的技能都達不到那個)
OR
B)使用grep
,awk
,sed
...要做到這一點
我認爲問題是,我的關鍵字不是整個單獨的單詞並且必須部分匹配searchfile.txt
中的內容。
感謝您的幫助!謝謝。
在'keywords.txt'你必須在頭兩行的末尾空白字符....這就是爲什麼'grep'沒有作品 –
同意,在'grep的-F -f ...'shouild工作。使用'sed -i's/* $ //'file'從您的keywords.txt中刪除空格。祝你好運。 – shellter
謝謝兩個 - sed命令需要被_sed -i''s/* $ //'file_因爲我不太明白的原因。但我檢查過,以確保文件中沒有任何空格(在textwrangler中搜索並替換空格)。但輸出文件基本上仍然是整個輸入文件!這很奇怪 - 但是python腳本現在可以解決問題了。 – user2662391