通过匹配从另一个文件获取的模式替换文件中的字符串

时间:2016-01-27 12:44:46

标签: linux bash shell awk

我有两个文件

File1中:

modules
    module
        controllers
        models
        views

文件2:

$node_(17) set X_ -0.31
$node_(16) set Y_ 1274.64
ns_ at 1.0 "$node_(17) setdest -0.31 1274.64 0.00"
ns_ at 2.1 "$node_(16) setdest 2041.48 295.29 2.52"

我想在File1中找到(File2的)第一列值,并用相应的第二列值替换它们。例如。 File1中的(17)应替换为(0),(16)和(1)。

输出文件1:

(17) (0)
(16) (1)

我该怎么做?感谢

1 个答案:

答案 0 :(得分:2)

使用GNU sed:

sed -f <(sed 's/\((.*)\) \((.*)\)/s|\1|\2|/' file2) file1

输出:

$node_(0) set X_ -0.31
$node_(1) set Y_ 1274.64
ns_ at 1.0 "$node_(0) setdest -0.31 1274.64 0.00"
ns_ at 2.1 "$node_(1) setdest 2041.48 295.29 2.52"

如果您想“就地”编辑file1,请添加sed的选项-i

请参阅:The Stack Overflow Regular Expressions FAQ