awk에서 \n(and)\n을 구분 기호로 사용하는 방법

awk에서 \n(and)\n을 구분 기호로 사용하는 방법

다음 데이터가 포함된 파일이 있습니다.

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

print awk: 경고: 이스케이프 시퀀스 \(' treated as plain(' awk: fatal: 일치하지 않음 ( 또는 (: / (/

답변1

다음과 같이 이를 수행할 수 있습니다 sed.

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

아니면 awk너와 함께 수많은 탈출을 해야 해

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

\before의 올바른 이스케이프를 얻고 n특별한 해석을 방지합니다.(

답변2

나는 \n( 및 이전)의 목표를 달성하기 위해 grep과 sed의 조합을 사용합니다.\n

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

샘플 출력

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

관련 정보