Grep은 블랙리스트를 사용하여 CSV를 처리할 수 없습니다.

Grep은 블랙리스트를 사용하여 CSV를 처리할 수 없습니다.

헤더 없이 다음과 같이 구분된 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])

관련 정보