删除 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

相关内容