csv 파일의 특정 포함 문자 뒤에 있는 열의 모든 항목 제거

csv 파일의 특정 포함 문자 뒤에 있는 열의 모든 항목 제거

CSV 파일에서 특정 문자 뒤의 열에 나타나는 내용을 모두 제거해야 합니다. 현재 형식은 다음과 같습니다.

2020-01-01T12:00:00,Transaction Description,Initiator,$00.00

T 다음에 나타나는 첫 번째 열의 내용을 제거하여 다음과 같이 만들고 싶습니다.

2020-01-01,Transaction Description,Initiator,$00.00

sed를 시도했지만 예상대로 작동하지 않았습니다.

답변1

sed표준 과 비슷한 방식으로 사용티무르는 Perl을 사용합니다:

$ sed 's/T[^,]*//' file
2020-01-01,Transaction Description,Initiator,$00.00

T이렇게 하면 대체를 통해 각 줄의 첫 번째부터 첫 번째 쉼표까지(포함하지 않음) 모든 텍스트가 제거됩니다 .

결과를 저장하려면 새 파일로 리디렉션하세요.

답변2

이 Perl 단일 라이너를 사용하십시오.

perl -pe 's{T[^,]*}{}' input_file > output_file

여기서
-e명령줄 플래그는 Perl에게 지정된 스크립트에서 코드를 찾는 대신 인라인 뒤에 오는 코드를 사용하도록 지시하고
-pPerl에게 한 번에 한 줄씩 입력을 반복하여 실행된 지정된 코드 다음에 인쇄하도록 지시
s{T[^,]*}{}합니다 T. ,0회 이상의 문자 ( *탐욕적이거나 가장 긴 일치 항목 지정) 이는 첫 번째 T(포함)로 시작하고 첫 번째 쉼표(제외)로 끝나는 문자를 "먹습니다".

답변3

방법1:

awk -F "," 'OFS=","{gsub(/T.*/,"",$1);print $0}' filename

산출

2020-01-01,Transaction Description,Initiator,$00.00

명령 2

perl -pne "s/,/\n/g" filenmame| sed '/.T/s/T.*//g'|perl -pne "s/\n/,/g"| sed "s/,$//g"

산출

2020-01-01,Transaction Description,Initiator,$00.00

방법3

#!/usr/bin/python
import re
p=re.compile(r'T.*')
k=open('p.txt','r')
for i in k:
    l=i.split(",")
    z=re.sub(p,"",l[0])
    rt=",".join(l[1:])
    er=",{0}".format(rt)
    print z+er,

산출

2020-01-01,Transaction Description,Initiator,$00.00

관련 정보