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 location
campo para sus nuevos valores.
Suponiendo además que tiene encabezados en su archivo CSV (ya que desea crear un nuevo location
campo) 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 filepath
campo. Luego, el resultado de esa operación se asigna al nuevo location
campo.
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 -I
opción antes --csv
en la línea de comando?
Respuesta4
awk -F ' / ' '{print $7} yourfilename