GNU sed - 维持领先空间

时间:2013-11-21 10:13:07

标签: regex bash sed gnu

我正在尝试将数据库类型转换为另一种数据库类型。它不仅仅是一个简单的替换,而是我希望通过特定因子扩展列长度。例如:

NATIONAL CHARACTER VARYING(50) ----> VARCHAR(60)

这可以使用波纹管sed命令来实现,但它不会保留前导空格。我怀疑问题出在评估计算所需的结束标志/ ge中。

sed -r  's/(^.*)NATIONAL CHARACTER VARYING\(([0-9]+)\)/ echo \1 VARCHAR"("$(echo "scale=0;\2*1.2\/1"\|bc)")"/ge'

1 个答案:

答案 0 :(得分:2)

echo时引用反向引用。说:

sed -r 's/(^.*)NATIONAL CHARACTER VARYING\(([0-9]+)\)/ echo "\1"VARCHAR"("$(echo "scale=0;\2*1.2\/1"\|bc)")"/ge' filename