이런 파일이 있어요
CREATE TABLE ENTDTA.$$BAPWD (
PERSID NUMBER(10) DEFAULT 0 NOT NULL ,
"PASSWORD" CHAR(10) DEFAULT '' NOT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
CREATE TABLE ENTDTA.$$BARTSPH (
CLORDID NUMBER(10) DEFAULT 0 NOT NULL ,
CLORDLNID NUMBER(10) DEFAULT 0 NOT NULL ,
RTSTEPID NUMBER(10) DEFAULT 0 NOT NULL ,
HLDRSNCDE CHAR(6) DEFAULT '' NOT NULL ,
HOLDCMNT VARCHAR2(256) DEFAULT '' NOT NULL ,
HLDUNTDT DATE DEFAULT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
CREATE TABLE ENTDTA.$$BASRCTY (
OTSRCTC CHAR(6) DEFAULT '' NOT NULL ,
OTSRCTD CHAR(30) DEFAULT '' NOT NULL ,
ORLNSTSCD CHAR(6) DEFAULT '' NOT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
CREATE TABLE ENTDTA.$$BAWPDFST (
H1SCNS NUMBER(7, 0) DEFAULT 0 NOT NULL ,
OTSRCTC CHAR(6) DEFAULT '' NOT NULL ,
STYLEID NUMBER(10) DEFAULT 0 NOT NULL ,
CRTNAM CHAR(50) DEFAULT NULL ,
CRTTIM TIMESTAMP DEFAULT SYSTIMESTAMP NOT NULL ,
LSTUPDNAM CHAR(50) DEFAULT NULL ,
LSTUPDTIM TIMESTAMP DEFAULT SYSTIMESTAMP NOT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
무슨 일이 있을 때마다 ENTDTA.$$. $$something은 큰따옴표로 묶어야 합니다. 출력은 다음과 같아야합니다
CREATE TABLE ENTDTA."$$BAPWD" (
PERSID NUMBER(10) DEFAULT 0 NOT NULL ,
"PASSWORD" CHAR(10) DEFAULT '' NOT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
CREATE TABLE ENTDTA."$$BARTSPH" (
CLORDID NUMBER(10) DEFAULT 0 NOT NULL ,
CLORDLNID NUMBER(10) DEFAULT 0 NOT NULL ,
RTSTEPID NUMBER(10) DEFAULT 0 NOT NULL ,
HLDRSNCDE CHAR(6) DEFAULT '' NOT NULL ,
HOLDCMNT VARCHAR2(256) DEFAULT '' NOT NULL ,
HLDUNTDT DATE DEFAULT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
CREATE TABLE ENTDTA."$$BASRCTY" (
OTSRCTC CHAR(6) DEFAULT '' NOT NULL ,
OTSRCTD CHAR(30) DEFAULT '' NOT NULL ,
ORLNSTSCD CHAR(6) DEFAULT '' NOT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
CREATE TABLE ENTDTA."$$BAWPDFST" (
H1SCNS NUMBER(7, 0) DEFAULT 0 NOT NULL ,
OTSRCTC CHAR(6) DEFAULT '' NOT NULL ,
STYLEID NUMBER(10) DEFAULT 0 NOT NULL ,
CRTNAM CHAR(50) DEFAULT NULL ,
CRTTIM TIMESTAMP DEFAULT SYSTIMESTAMP NOT NULL ,
LSTUPDNAM CHAR(50) DEFAULT NULL ,
LSTUPDTIM TIMESTAMP DEFAULT SYSTIMESTAMP NOT NULL ,
UPDATE_IDENT NUMBER(7, 0) DEFAULT 0 NOT NULL )
;
sed
또는를 사용하여 어떻게 이를 달성할 수 있습니까 awk
?
답변1
글쎄, 나는 곰에게 한 번만 먹이를 줄 것이다. :) 다음은 sed를 사용하여 가능한 솔루션입니다.
sed -e 's/\(\$\$[a-zA-z]*\)/'\"'\1'\"'/g' YourFileName
이 질문을 세 부분으로 나누어 생각해 보세요.
패턴 일치 - 일부 문자열을 일치시켜야 합니다
\(\$\$[a-zA-z]*\)
.그룹을 사용하여 일치 항목을 재사용합니다. 이는
\(
괄호가 중간 항목에 대해 말하는 것입니다\)
. "이 문자열을 일치시키면 나중에 사용하고 싶습니다.새 문자열 - 새 문자열은 정규식에서 일치해야 하는 첫 번째 패턴을 나타내는
"\1"
것과 같습니다 .\1
참고로 보시다시피 저는 "
를 사용하여 a를 탈출했습니다 '\"'
.
나는 당신이 작은 발걸음을 내딛고, 초보자용 sed 스크립트를 사용하고, 몇 가지 sed 레시피를 분석하는 것을 제안합니다.