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

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

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 dessas entradas.

Preciso imprimir apenas as entradas que vêm depois de "\n(" e antes de ")\n".

Eu tentei com o awk, mas não consegui fornecer o delimitador.

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

imprime a linha inteira do arquivo

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

imprime awk: aviso: sequência de escape \(' treated as plain(' awk: fatal: Unmatched (ou (: / (/

Responder1

Você pode fazer isso sedassim:

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

ou com awkvocê tem que escapar muito

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

para obter a fuga correta tanto para o \antes do nquanto para se proteger contra a interpretação especial do(

Responder2

Usei uma combinação de grep e sed para atingir seu objetivo de 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\')

informação relacionada