как использовать \n( и )\n в качестве разделителя в awk

как использовать \n( и )\n в качестве разделителя в awk

У меня есть файл, который содержит следующие данные

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

таких записей несколько.

Мне нужно вывести только те записи, которые идут после "\n(" и до ")\n".

Я пробовал использовать awk, но не смог предоставить разделитель.

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

печатает всю строку файла

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

выводит awk: предупреждение: escape-последовательность \(' treated as plain(' awk: фатально: Несоответствие ( или (: / (/

решение1

Этого можно добиться sedследующим образом:

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

или awkвам придется много убегать

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

чтобы получить правильное спасение как для \перед nи для защиты от специальной интерпретации(

решение2

Я использовал комбинацию grep и sed для достижения вашей цели после \n( и до )\n

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

Пример вывода

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

Связанный контент