헤더 없이 다음과 같이 구분된 CSV가 있습니다.
epochtime,#value,#value,property=1.property=2.property=3
개별 속성은 마침표로 구분되지만 csv의 단일 열에 포함됩니다.
특정 속성을 필터링하기 위해 속성 목록이 포함된 블랙리스트를 실행하려고 합니다. 아래에서 이 grep 함수를 사용하고 있습니다.
grep -vFf blacklist.txt file.csv > newfile.csv
그러나 결과가 반환되지 않습니다. 다른 값과 에포크 시간을 제거하면 이러한 에포크가 문제가 아닐 수도 있다는 의심을 갖게 만드는 것이 완벽하게 작동합니다.
다른 두 열을 무시하고 올바른 결과를 반환하도록 할 수 있는 방법이 있습니까?
미리 감사드립니다. 저는 유닉스를 처음 접했습니다. awk 명령이 더 적합합니까?
답변1
누구든지 검색을 통해 답변을 찾아 이 기사를 우연히 발견했다면. 나는 작은 Python 스크립트를 작성했습니다.
import csv
import os
blacklist_dict = {}
with open("blacklist.txt", 'r') as blacklist:
for line in blacklist:
line = line.strip('\n')
blacklist_dict[line] = 0
blacklist.close()
with open('filename.csv', "r") as source_file, open('newfile.csv', "w") as target_file:
reader = csv.reader(source_file)
writer = csv.writer(target_file)
for row in reader:
if row[2] not in blacklist_dict:
writer.writerows([row])