como usar \ n (e) \ n como delimitador no awk

1

Eu tenho um arquivo que contém os dados abaixo

7[label = "ScanStep: T_b0\n(T.a = 1)\na\nb\nc\nd\ne\ndob\ntimestamp1\nUnc: Integer(8)\nUnc: Integer(8)\nUnc: Varchar(80)\nUnc: Numeric(10,2)\nUnc: Varbinary(80)\nUnc: Date(8)\nUnc: Timestamp(8)", color = "brown", shape = "box"];

7[label = "ScanStep: cde_b1\nBuddies: (cde_b1, cde_b0, cde_b2)\n(public.cde.newcol = \'013\')\nssn\nnewcol\nmasked_ssn\nUnc: Numeric(10,2)\nUnc: Varbinary(80)\nUnc: Date(8)\nUnc: Timestamp(8)", color = "brown", shape = "box"];

existem várias entradas desse tipo.

Eu preciso imprimir apenas as entradas que vierem depois de "\ n (" e antes de ") \ n".

Eu tentei com o awk, mas incapaz de fornecer delimitador.

awk -F "\n\\(" '{print $1}' unset

prints whole line of the file

awk -F "\n\(" '{print $1}' unset

prints awk: warning: escape sequence \(' treated as plain(' awk: fatal: Unmatched ( or (: / (/

    
por anurag 23.06.2016 / 11:29

2 respostas

1

Você pode fazer isso com sed da seguinte forma:

sed -e 's,\n(.*,,' unset

ou com awk você precisa fugir muito

awk -F'\\n\(' '{print $1}' unset

para obter o escape certo para o \ antes do n e para proteger contra a interpretação especial do (

    
por 23.06.2016 / 13:52
1

Eu usei uma combinação de grep e sed para atingir sua meta depois \ n (e antes) \ n

grep -o '\n(.*)\n' test.txt|sed -e 's/\n//g'

Exemplo de saída

(T.a = 1)
(public.cde.newcol = \'013\')
    
por 23.06.2016 / 13:55