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 sed
de 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 T
de 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í,
-e
el 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,
-p
le 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 T
seguido 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