Cómo imprimir una cadena en la séptima columna leyendo el valor de la celda csv al revés usando awk o sed

Cómo imprimir una cadena en la séptima columna leyendo el valor de la celda csv al revés usando awk o sed

Tengo la séptima columna con valores como:

OS:J:\output\Windows\System32\winevt\Logs\Security.evtx
OS:J:\output\Windows\System32\winevt\Logs\System.evtx

Quiero extraer información leyendo valores al revés y colocándolos en una nueva columna.

Los valores que se extraerán en una nueva columna, digamos "ubicación", deberían verse así:

Location
Security.evtx
System.evtx

Respuesta1

$ awk -F'\' '{print $7}' inputfile

Respuesta2

Como está marcado, la última columna es $7. Se usa el siguiente comando para extraer los valores.

dominio

sed -r 's/.*\\//g' filename

producción

Security.evtx
System.evtx

Respuesta3

Suponiendo que hay al menos seis campos más que no muestra antes del séptimo campo con los datos de la pregunta, puede leer el archivo CSV con una herramienta comoMolinero( mlr) para crear un nuevo locationcampo para sus nuevos valores.

Suponiendo además que tiene encabezados en su archivo CSV (ya que desea crear un nuevo locationcampo) y que el encabezado para el séptimo campo es filepath, entonces podría hacer lo siguiente:

mlr --csv put '$location = sub($filepath,".*\\","")' file

La sub()función eliminaría todo el texto antes de la última barra invertida en el filepathcampo. Luego, el resultado de esa operación se asigna al nuevo locationcampo.

Pruebas:

$ cat file
A,B,C,D,E,F,filepath
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\Security.evtx
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\System.evtx
$ mlr --csv put '$location = sub($filepath,".*\\","")' file
A,B,C,D,E,F,filepath,location
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\Security.evtx,Security.evtx
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\System.evtx,System.evtx
$ mlr --c2p --barred put '$location = sub($filepath,".*\\","")' file
+---+---+---+---+---+---+---------------------------------------------------------+---------------+
| A | B | C | D | E | F | filepath                                                | location      |
+---+---+---+---+---+---+---------------------------------------------------------+---------------+
| 1 | 2 | 3 | 4 | 5 | 6 | OS:J:\output\Windows\System32\winevt\Logs\Security.evtx | Security.evtx |
| 1 | 2 | 3 | 4 | 5 | 6 | OS:J:\output\Windows\System32\winevt\Logs\System.evtx   | System.evtx   |
+---+---+---+---+---+---+---------------------------------------------------------+---------------+

¿Desea realizar el cambio en el lugar y luego agregar la -Iopción antes --csven la línea de comando?

Respuesta4

awk -F ' / ' '{print $7} yourfilename

información relacionada