Shell的字符串替换问题

jerryzhang83 2010-01-14 06:13:03
我现在有个sql文件
INSERT INTO [TA01_RETURNS (RET_INTG)] ([CA01_RETURN_ID], [CA01_VERSION_REVISED], [CA08_BATCH_ID], [CR12_ACCOUNTS_NUMBER], [CG02_TAX_TYPE], [CG37_RETURN_TYPE], [CA01_TAX_YEAR], [CA01_TAX_DUE], [CA01_TAX_PERIOD], [CA01_CAPTURE_DATE], [CA01_RECEIVED_DATE], [CA01_SEND_DATE], [CA01_DUE_DATE], [CA01_RETURN_STATUS], [CA01_BATCH_STATUS], [CA01_RETURN_NOTES], [CA01_AUDIT_TRAIL_ACTION], [CA01_AUDIT_TRAIL_DATE], [CA01_AUDIT_TRAIL_USER], [CS05_CAPTURE_OFFICE_ID], [CA01_PERIOD_FROM], [CA01_PERIOD_TO], [CA13_FDC_BATCH_ID], [CA01_FOF_JOURNAL_STATUS], [CG03_REVISED_REASON], [CT08_OBJ_NO], [CA01_LIABILITY_AMOUNT], [CG03_SOURCE], [CA01_FINANCIAL_YEAR_FROM], [CA01_FINANCIAL_YEAR_TO], [CA03_TEMPLATE_VERSION], [CA01_REASON_FOR_CANCEL_FOF], [CG22_LINKED_CURRENCY], [CA01_LINKED_CURRENCY_TAX_DUE], [CA01_VERIF_REQ_FLAG], [CA01_MATH_ERRORS_FLAG], [CA01_BAR_CODE], [CA01_PAYMENT_AMOUNT], [CA01_RETURN_CANCEL_REASON], [CA01_FINAL_RETURN], [CA01_RETURN_REVISE_BY], [CA01_RETURN_STATUS_REASON], [CA01_REVISED_REASON], [CA01_MATH_ERROR_REASON], [CA01_CASE_REFERENCE], [CA01_NOTICE_GENERATED], [CA01_REASSESS_BY_AUDIT])
VALUES (28296, 1, 26320, 100036306600003, '03', '1928', '2009', NULL, NULL, '20090214 08:14:44', '20090214', '20090214 08:16:57', '20090730', '02608', '02510', '', 'SAVECAPTUREDETAILS', '20090214 08:19:24.827', 'SYSADMIN', 101, '20090701', '20090730', NULL, '02702', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, '', NULL, '', '', '100036306600192801/07/200930/07/200910100002829614/02/2009', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
GO

有很多这样数据, 想把 每个语句的开始 [TA01_RETURNS (RET_INTG)] 替换为 TA01_RETURNS 后边的 [ ] () 不删
我用 gsub 但不可以 因为 gsub 第一个参数 要用变量 ,而变量里还要用 转义字符 \[
如果用别的方法 如何做?
...全文
750 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chendaming007 2010-01-28
  • 打赏
  • 举报
回复
可以上网搜下sed的用法!
沐星晨 2010-01-15
  • 打赏
  • 举报
回复
sed -r 's/(^[^[]+)\[([^(]+)[^]]+\]/\1\2/'

eg.

echo 'INSERT INTO [TA01_RETURNS (RET_INTG)] ([CA01_RETURN_ID] 后续略...' |sed -r 's/(^[^[]+)\[([^(]+)[^]]+\]/\1\2/'

INSERT INTO TA01_RETURNS ([CA01_RETURN_ID] 后续略...
grunt112233 2010-01-15
  • 打赏
  • 举报
回复
用sed呗
你的需求没看懂,帮不了你了
thy38 2010-01-14
  • 打赏
  • 举报
回复
Shell不会,Python倒可以帮你

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧