【发布时间】:2020-12-29 04:17:27
【问题描述】:
在询问之前我尝试了一些 sed 和 awk,但没有成功,所以我在这里。
我希望用它来替换 bash 脚本中的一些行(在 .sql 文件中)。问题是我看到它带有特定于 SQL 的反引号,并且可能带有单引号?
实际要做的就是替换行之类的
`payment_methods` text COLLATE utf8_unicode_ci DEFAULT '-1',
到
`payment_methods` text COLLATE utf8_unicode_ci,
SQL 转储约为 10 Gb。
sed -i 's/`payment_methods` text COLLATE utf8_unicode_ci DEFAULT '-1',/`payment_methods` text COLLATE utf8_unicode_ci,/' file.sql
或使用行号:
sed -i '357s/.*/`payment_methods` text COLLATE utf8_unicode_ci,/' file.sql
awk 'NR==357 {$0="`payment_methods` text COLLATE utf8_unicode_ci,"} 1' file.sql
还忘了提到在转义字符上使用反斜杠没有帮助。
【问题讨论】:
-
您的第一次
sed尝试将失败,因为您不能嵌套单引号。另外两个在我看来他们应该工作。请尝试提供minimal reproducible example。 -
您只是想从 payment_methods 列中删除“DEFAULT '-1'”部分吗?还是在任何地方?