1

I have two files

File1:

$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"

File2:

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

I want to find first column values(of File2) in File1 and replace them with corresponding 2nd column values. E.g. (17) in File1 should be replaced with (0), (16) with (1).

Output 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"

How can I do that? Thanks

user112333
  • 75
  • 1
  • 6

1 Answers1

2

With GNU sed:

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

Output:

$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"

If you want to edit file1 "in place" add sed's option -i.


See: The Stack Overflow Regular Expressions FAQ

Community
  • 1
  • 1
Cyrus
  • 69,405
  • 13
  • 65
  • 117