簡體   English   中英

Shell 幫忙替換雙引號

[英]Shell Help to replace double quotes

需要幫助將雙引號替換為轉義字符,請找到以下一行代碼:

echo -e "nzsql -d $f1 -c" \"alter table $f3.$f2 ALTER COLUMN $f4 SET DEFAULT $v5\" 

output 是:

nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN CD_ID SET DEFAULT '-9999' "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN LMT_ID SET DEFAULT 99' "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN PPN_TM SET DEFAULT "TIMESTAMP"('now(0)'::"VARCHAR") "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN SRC_STM_ID SET DEFAULT '-9999' "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN UNQ_ID_IN_SRC_STM SET DEFAULT 'MISSING_VALUE'::"NVARCHAR" "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN END_DT SET DEFAULT '9999/12/31' "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN EFF_DT SET DEFAULT '1900/01/01' "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN ISRT_RUN_ID SET DEFAULT '-9999' "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN UDT_RUN_ID SET DEFAULT '-9999' "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN UDT_RUN_ID SET DEFAULT -9999 "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN UDT_RUN_ID SET DEFAULT 9999 "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN UDT_RUN_ID SET DEFAULT Now() "
nzsql -d  DD  -c "alter table SCHEMA.DD ALTER COLUMN LAST_VRSN_F SET DEFAULT '1' "

我正在使用上面的命令來准備 alter table 語句

下面是V5值

'-9999'
'-9999'
"TIMESTAMP"('now(0)'::"VARCHAR")
'-9999'
'MISSING_VALUE'::"NVARCHAR"
'9999/12/31'
'1900/01/01'
'-9999'
'-9999'
9999
Now()
now(0)
'1'

我只需要做的是,如果 v5 值有"那么只需將其替換為\"和 rest 如果它有單引號或沒有引號則必須保持不變。

我試過

v5=`sed $v5/"/\"`

v5=`echo ${v5/"/\"/}`

不工作。

試試這個:

v5="$(echo "$v5" | sed 's/"/\\"/g')"

# this is your original command without any changes
echo -e "nzsql -d $f1 -c" \"alter table $f3.$f2 ALTER COLUMN $f4 SET DEFAULT $v5\" 

解釋:

  • echo "$v5" | sed echo "$v5" | sed :sed 從 STDIN 讀取 $v5;
  • 's/"/\\"/ :將"替換為\"但僅針對行中第一次出現的"
  • g :對行中每次出現的"應用替換。

如果您使用bash4或更高版本,則可以省略echo

v5="$(sed 's/"/\\"/g' <<<"$v5")"

正如您在問題末尾提到的,您可以省略sed並使用本機bash的替換:

VAR="${VAR//\"/\\\"}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM