cómo usar \n( y )\n como delimitador en awk

cómo usar \n( y )\n como delimitador en awk

Tengo un archivo que contiene los siguientes datos.

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"];

hay varias entradas de este tipo.

Necesito imprimir sólo las entradas que vienen después de "\n(" y antes de ")\n".

Lo intenté con awk pero no pude proporcionar el delimitador.

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

imprime toda la línea del archivo

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

imprime awk: advertencia: secuencia de escape \(' treated as plain(' awk: fatal: no coincidente ( o (: / (/

Respuesta1

Puedes lograr esto sedasí:

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

o con awktienes que escapar mucho

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

para obtener el derecho de escape tanto para el \antes ncomo para proteger contra la interpretación especial del(

Respuesta2

Utilicé una combinación de grep y sed para lograr tu objetivo de después \n( y antes )\n

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

Salida de muestra

(T.a = 1)
(public.cde.newcol = \'013\')

información relacionada