使用变量时sed无法正常工作

时间:2015-12-17 12:42:43

标签: shell

source=<!--jta-data-source>jdbc/FCBDataSource</jta-data-source-->

destination=<jta-data-source>jdbc/FCBDataSource</jta-data-source>


sed -i "s/$source/$destination/g" /home/rohan/R2.5LZN/UIReleasedArea/obp.ui.domain/persistence.xml

我收到错误sed: -e expression #1, char 44: unknown option to s

2 个答案:

答案 0 :(得分:1)

考虑替换发生时会发生什么。该命令变为:

sed -i 's/<!--jta-data-source>jdbc/FCBDataSource</jta-data-source-->/<jta-data-source>jdbc/FCBDataSource</jta-data-source>/g' some_filename

然后,sed看到s/<!--jta-data-source>jdbc/FCBDataSource</j…并认为您要将<!--jta-data-source>jdbc的匹配项替换为文本FCBDataSource<,并且s命令具有非法j修饰符(和其他垃圾)。

您需要选择一个未出现在模式或替换文本中的分隔符。 ,即可。

答案 1 :(得分:0)

destination='<!--jta-data-source>jdbc/FCBDataSource</jta-data-source-->'
source='<jta-data-source>jdbc/FCBDataSource</jta-data-source>'


sed -i "s,$source,$destination,g"     
/home/rohan/R2.5LZN/UIReleasedArea/obp.ui.domain/persistence.xml

问题在于变量

需要引用