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 sed
de 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 T
de 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,
-e
o 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,
-p
diz 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 T
seguido 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