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[^,]*}{}바꾸도록 지시합니다 . 0번 이상의 문자 T로 코드를 작성하세요 ( 탐욕적이거나 가장 긴 일치를 지정함). 이는 첫 번째 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

관련 정보