Eu tenho a 7ª coluna com valores como:
OS:J:\output\Windows\System32\winevt\Logs\Security.evtx
OS:J:\output\Windows\System32\winevt\Logs\System.evtx
Quero extrair informações lendo os valores de trás para frente e colocando em uma nova coluna.
Os valores a serem extraídos em uma nova coluna, digamos "localização", devem ser parecidos com:
Location
Security.evtx
System.evtx
Responder1
$ awk -F'\' '{print $7}' inputfile
Responder2
Conforme verificado, a última coluna é $7. Usado o comando abaixo para extrair os valores
comando
sed -r 's/.*\\//g' filename
saída
Security.evtx
System.evtx
Responder3
Supondo que haja pelo menos mais seis campos que você não mostra antes do sétimo campo com os dados da pergunta, você pode ler o arquivo CSV com uma ferramenta comoMoleiro( mlr
) para criar um novo location
campo para seus novos valores.
Supondo ainda que você tenha cabeçalhos em seu arquivo CSV (já que deseja criar um novo location
campo) e que o cabeçalho do sétimo campo seja filepath
, então você poderia fazer o seguinte:
mlr --csv put '$location = sub($filepath,".*\\","")' file
A sub()
função removeria todo o texto antes da última barra invertida do filepath
campo. O resultado dessa operação é então atribuído ao novo location
campo.
Teste:
$ 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 |
+---+---+---+---+---+---+---------------------------------------------------------+---------------+
Você deseja fazer a alteração no local e adicionar a -I
opção antes --csv
na linha de comando.
Responder4
awk -F ' / ' '{print $7} yourfilename