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에게 지정된 스크립트에서 코드를 찾는 대신 다음 코드를 인라인하도록 지시하고,
-p
Perl에게 입력 줄을 한 번에 한 줄씩 반복하고, 실행 후 지정된 코드를 인쇄하고, 다음을
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