다음 데이터가 포함된 파일이 있습니다.
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\')