Removendo tudo em uma coluna após um caractere incorporado específico em um arquivo csv

Removendo tudo em uma coluna após um caractere incorporado específico em um arquivo csv

Preciso remover todo o conteúdo que aparece em uma coluna após um caractere específico no arquivo CSV. Este é o formato em que está atualmente:

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

Quero remover o conteúdo da primeira coluna que aparece depois de T, para que fique assim:

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

Eu tentei sed mas não funcionou como esperado.

Responder1

Usando o padrão sedde maneira semelhante aTimur usa Perl:

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

Isso remove todo o texto desde o primeiro Tde cada linha, até (mas não incluindo) a primeira vírgula, por meio de uma substituição.

Redirecione para um novo arquivo para salvar o resultado.

Responder2

Use esta linha única do Perl:

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

Aqui,
-eo sinalizador de linha de comando diz ao Perl para usar o código que segue em linha, em vez de procurar o código no script especificado,
-pdiz ao Perl para fazer um loop na entrada uma linha por vez, imprimindo-a após o código especificado ser executado,
s{T[^,]*}{}substitui Tseguido por quaisquer caracteres diferentes de ,zero ou mais vezes ( *especifica correspondência gananciosa ou mais longa). Isso "devora" os caracteres que começam com o primeiro T, inclusive, e terminam com a primeira vírgula seguinte, exclusivo.

Responder3

Método 1:

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

saída

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

comando2

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

saída

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

método3

#!/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,

saída

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

informação relacionada