我有一个包含以下数据的文件
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: 警告: 转义序列
\(' treated as plain
(' awk: fatal: 不匹配 ( 或 (: / (/
答案1
您可以像这样完成此操作sed
:
sed -e 's,\\n(.*,,' unset
或者和awk
你一起必须做很多逃避
awk -F'\\\\n\\(' '{print $1}' unset
获得对\
before的正确转义n
并防止对 the 的特殊解释(
答案2
我使用 grep 和 sed 的组合来实现 after \n( 和 before )\n 的目标
grep -o '\\n(.*)\\n' test.txt|sed -e 's/\\n//g'
样本输出
(T.a = 1)
(public.cde.newcol = \'013\')