Como obter as linhas que estão em uma parte específica

0

Sou um novo usuário para awk e sei como cortar colunas, anexar colunas e substituir caracteres. Agora eu preciso cortar um padrão particular de um arquivo enorme. O arquivo é como abaixo:

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
3manager.org.apache.juli.FileHandler.bufferSize = 16384

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:Successfully Logged In

A partir disso (acima é apenas a cabeça, o arquivo é muito maior), eu preciso cortar todas as linhas com o padrão:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

eu usei

   sed 's/^.*java:LOG:=//' inpufile > outputfile

Mas isso não funcionou.

    
por Ricky 08.09.2017 / 08:32

2 respostas

0

Tente isto:

sed -n '/.*java:LOG:/p' inpufile > outputfile

Comando sed -n '/pattern/p' imprime somente strings que correspondem a um padrão dentro //

Seu comando - sed 's/^.*java:LOG:=//' - usa a construção substituta s/pattern/replace_string/ (procurando por pattern e substitui por replace_string )

De seu exemplo do comando sed , acho que você precisa apenas de strings que contenham java:LOG: . Isso é verdade?

Preste atenção ao seu nome de arquivo - você perdeu a letra 't' - inpufile , mas não o arquivo inpu t

Se você precisar de correspondência exata com essa string:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

.. o padrão será muito longo

    
por 08.09.2017 / 08:38
0

Simplesmente com awk (para extrair as linhas por padrão):

awk '/^[0-9]{4}-[0-9]{2}-[0-9]{2}.*\.java:LOG/' inputfile > outputfile
    
por 08.09.2017 / 09:36

Tags