%5Cn%20como%20delimitador%20no%20awk.png)
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 sed
assim:
sed -e 's,\\n(.*,,' unset
ou com awk
você tem que escapar muito
awk -F'\\\\n\\(' '{print $1}' unset
para obter a fuga correta tanto para o \
antes do n
quanto 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\')