나는 이것을 수행하는 방법을 찾기 위해 온라인 검색을 다 써 버렸습니다.다른 파일에 나열된 키워드와 부분 일치하는 텍스트 파일의 모든 줄을 추출하십시오.
두 개의 열과> 200 행을 가진 파일 searchfile.txt
이 탭으로 구분되어 있습니다. 여기 샘플 :
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
을 내가 부분적으로 searchfile.txt
의 ID와 일치 일부 키워드와 다른 파일 keywords.txt
있습니다
ENGLAND/117316
DARMOR/388
438207
을 내가 keywords.txt
searchfile.txt
에서 모든 행을 추출 할
다른 유사한 질문의 해결책을 사용하여 시도 :
,342,699,475,351,803,210나는이 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'
]
이
A와 방법이 있나요)이 스크립트를 수정하여 keywords.txt
과 같은 파일을 읽고 다른 파일에 줄을 출력 하시겠습니까? (내 파이썬 기술은 최대 없습니다)
또는
B) 나는 문제가 내 키워드가 없습니다 전체 별개의 단어가 있다는 생각이
할 ... sed
, awk
, grep
사용 searchfile.txt
에있는 내용과 부분적으로 일치해야합니다.
도움에 감사드립니다! 감사.
'keywords.txt' 처음 두 줄 끝에 공백 문자가 있습니다 .... 그래서'grep'가 작동하지 않습니다. –
'grep -F -f ...'shouild work . 'sed -i 's/* $ //'file'를 사용하여 keywords.txt에서 공백을 제거하십시오. 행운을 빕니다. – shellter
두 가지 모두 - sed 명령은 _sed -i '' 's/* $ //'file_이되어야했습니다. 이유는 알 수 없습니다. 하지만 필자는 파일에 공백이 없는지 확인했다. (텍스트 랭글러에서 공백을 검색하고 바꾼다.) 하지만 여전히 출력 파일은 기본적으로 전체 입력 파일입니다! 이것은 이상한 일입니다 - 그러나 python 스크립트는 문제 해결을 위해 작업했습니다. – user2662391