刪除 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以類似的方式使用標準Timur 使用 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[^,]*}{}替換T後面的程式碼由,零次或多次(*指定貪婪或最長匹配)。這會「吃掉」以第一個 T 開頭(含)和以第一個逗號結尾(不包括)的字元。

答案3

方法一:

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

相關內容