用perl替换文件的特定行的一部分

时间:2014-05-07 09:37:29

标签: regex oracle perl replace

我有一个文件,其中每行都有标签。 例如:

<stock_name>Abc Inc.</stock_name> <stock_value>123.456</stock_value> ........

我有一个数据库表,其中有记录告诉股票的(新)股票价值。 数据库表有两列:stock_name and stock_value

我需要扫描此数据库表以及表中的每个stock_name,我需要将<stock_value>xxx</stock_value>替换为<stock_value>yyy</stock_value>,而不是文件中的相应<stock_name>(xxx =现有stock_value在文件中; yyy =从特定股票的数据库中检索的新stock_value)。有人可以帮我吗?

PS:这不是作业。我正在编写一个perl脚本来修改文件。 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您的标记保证<tag>value</tag>,那么这将使用标记名称的哈希值替换值:

my %table = (
    stock_name => 'xxx',
    stock_value => 'yyy',
);

$file = s/<([^>\/]*)>[^<]*/<$1>$table{$1}/g;