Linux 通过匹配从另一个文件获得的模式替换文件中的字符串
我有两个文件 文件1:Linux 通过匹配从另一个文件获得的模式替换文件中的字符串,linux,bash,shell,awk,Linux,Bash,Shell,Awk,我有两个文件 文件1: $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" (17) (0) (16) (1) $node_(0) set X_ -0.31 $node_(1) set Y_ 1274.64 ns_ at 1.0 "$node
$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"
(17) (0)
(16) (1)
$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"
文件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"
(17) (0)
(16) (1)
$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中找到(File2的)第一列值,并用相应的第二列值替换它们。例如,文件1中的(17)应替换为(0),(16)应替换为(1)
输出文件1:
$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"
(17) (0)
(16) (1)
$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"
我该怎么做?感谢使用GNU:
sed -f <(sed 's/\((.*)\) \((.*)\)/s|\1|\2|/' file2) file1
sed-f非常感谢,它非常适合小文件。对于大文件,它会变得太慢。可以使用Perl吗?我想在Perl中也可以。请开始一个新问题。