是否有一种简单的方法可以在文件中查找和替换值,使用另一个文件作为需要重新标记的值的输入?例如。我有一个制表符分隔的file1,有两列:
a|1|b|C|:1-10(-) A1
a|2|b|E|:2-11(+) A2
a_b|3|b|C|:300-302(-) A3
a|5|b|C|:4-60(+) A1
a|7|b|D|:71-72(-) A11
其中第1列(选项卡前的所有内容)包含原始名称,第2列包含新名称。我想将其提供给file2,以替换所有出现的值。我知道使用
sed -i -e 's/a|1|b|C|:1-10(-)/A1/g' file2.txt
一次只执行一行,但有没有办法只输入file1,以便file2中的所有值都会立即重新标记?
答案 0 :(得分:0)
有点hacky,但我这样做
C0243321@IKHCPKISBN0084S ~/examples/perl
$ cat file1
xx1 zz1
xx2 zz2
C0243321@IKHCPKISBN0084S ~/examples/perl
$ cat file2
xx1, xx2
C0243321@IKHCPKISBN0084S ~/examples/perl
$ perl -e 'undef $/;$file1=<ARGV>;$file2=<ARGV>;@lines=split(/\n/,$file1);for(@lines){@fields=split(/\t/);$file2=~s/$fields[0]/$fields[1]/g;}print$file2' file1 file2
zz1, zz2