%20%5Cn%20als%20Trennzeichen%20in%20awk.png)
Ich habe eine Datei, die die folgenden Daten enthält
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"];
Es gibt mehrere solcher Einträge.
Ich muss nur die Einträge drucken, die nach "\n(" und vor ")\n" kommen.
Ich habe es mit awk versucht, konnte aber kein Trennzeichen angeben.
awk -F "\\n\\\\(" '{print $1}' unset
druckt die ganze Zeile der Datei
awk -F "\\n\\(" '{print $1}' unset
druckt awk: Warnung: Escape-Sequenz
\(' treated as plain
(' awk: fatal: Nicht übereinstimmend ( oder (: / (/
Antwort1
sed
Sie können dies folgendermaßen erreichen :
sed -e 's,\\n(.*,,' unset
oder mit awk
Ihnen müssen viel zu entkommen
awk -F'\\\\n\\(' '{print $1}' unset
um das richtige Entkommen sowohl für die \
vor der n
als auch zum Schutz vor der speziellen Interpretation der(
Antwort2
Ich habe eine Kombination aus grep und sed verwendet, um Ihr Ziel nach \n( und vor )\n zu erreichen
grep -o '\\n(.*)\\n' test.txt|sed -e 's/\\n//g'
Beispielausgabe
(T.a = 1)
(public.cde.newcol = \'013\')