Como imprimir string na 7ª coluna lendo o valor da célula csv de trás para frente usando awk ou sed

Como imprimir string na 7ª coluna lendo o valor da célula csv de trás para frente usando awk ou sed

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 locationcampo para seus novos valores.

Supondo ainda que você tenha cabeçalhos em seu arquivo CSV (já que deseja criar um novo locationcampo) 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 filepathcampo. O resultado dessa operação é então atribuído ao novo locationcampo.

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 -Iopção antes --csvna linha de comando.

Responder4

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

informação relacionada