Selecionar seletivamente colunas de um arquivo de texto

0

Estou tentando analisar um arquivo de log, onde gostaria de obter a primeira coluna e o texto que segue um padrão.

O arquivo de log seria assim,

2018-04-25 00:00:10,139 INFO  [HiveServer2-HttpHandler-Pool: Thread-2678420]: parse.ParseDriver (ParseDriver.java:parse(185)) - Parsing command: show databases

Eu gostaria que a saída final contivesse timestamp (primeira e segunda colunas) e todos os comandos seguidos pela palavra-chave command: .

Existe uma maneira limpa de conseguir isso? Atualmente, meu plano é usar awk para buscar as colunas 1 e 2. Use sed para obter os comandos e mesclar as duas saídas para um novo arquivo.

    
por user2487274 30.04.2018 / 05:26

2 respostas

0

Isso deve fazer

awk -F'(,|command:)' '{print $1, $NF}' infile
2018-04-25 00:00:10  show databases

Aqui, definimos os separadores de campo com uma vírgula , ou uma string command: e, em seguida, imprimimos o primeiro e o último campo.

    
por 30.04.2018 / 07:48
0

Você também pode fazer isso com cut :

cut -d' ' -f1,2,12- ${YOUR_LOG_FILE}

Ou (mais seguro):

cat ${YOUR_LOG_FILE} | tr -s " " | cut -d' ' -f1,2,11-
    
por 30.04.2018 / 10:41