Eliminar todo lo que hay en una columna después de un carácter incrustado específico en un archivo csv

Eliminar todo lo que hay en una columna después de un carácter incrustado específico en un archivo csv

Necesito eliminar todo el contenido que aparece en una columna después de un carácter específico en el archivo CSV. Este es el formato en el que se encuentra actualmente:

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

Quiero eliminar el contenido de la primera columna que aparece después de T, para que se vea así:

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

Probé sed pero no funcionó como se esperaba.

Respuesta1

Usar estándar sedde manera similar aTimur usa Perl:

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

Esto elimina todo el texto desde la primera Tde cada línea, hasta (pero sin incluir) la primera coma, mediante una sustitución.

Redirigir a un nuevo archivo para guardar el resultado.

Respuesta2

Utilice este resumen de Perl:

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

Aquí,
-eel indicador de línea de comando le dice a Perl que use el código que sigue en línea, en lugar de buscar el código en el script especificado,
-ple dice a Perl que recorra la entrada una línea a la vez, imprimiéndola después de que se ejecute el código especificado,
s{T[^,]*}{}reemplaza Tseguido por cualquier carácter que no sea ,cero o más veces ( *especifica una coincidencia codiciosa o más larga). Esto "devora" los caracteres que comienzan con la primera T, inclusive, y terminan con la primera coma siguiente, exclusiva.

Respuesta3

Método 1:

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

producción

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"

producción

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,

producción

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

información relacionada