我有一个文件 foo.txt 和一个我想在该文件中找到的正则表达式。每次找到正则表达式时,我都想从另一个文件 bar.txt 中取出一行,并将其替换为我在 foo.txt 中找到的正则表达式匹配项。基本上我想做查找/替换,但每次替换时我希望下一个替换文本来自 bar.txt 中的下一行。
有什么简单的 shell 魔法可以做到这一点吗?
答案1
如果我理解正确的话,也许是这样的:
awk '{getline repl < "second-file"; sub(/regexp/, repl); print}' < first-file
或者,如果regexp
每行可能出现多次或不在每行出现:
perl -pe 's/regexp/chomp($r=<STDIN>);$r/ge' first-file < second-file
答案2
perl -pe '
BEGIN {
open IN, "<replacements" or die $!;
}
s/pattern/
$tmp = <IN>;
chomp $tmp;
$tmp
/xe;
' filename