%5Cn%20como%20delimitador%20en%20awk.png)
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 sed
así:
sed -e 's,\\n(.*,,' unset
o con awk
tienes que escapar mucho
awk -F'\\\\n\\(' '{print $1}' unset
para obtener el derecho de escape tanto para el \
antes n
como 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\')