4

我有两个示例文件:

文件1:

Bolek
jeden(wzór1)
Lolek
dwa(wzór2)
trzy(wzór3)

文件2:

czerwony
zielony
niebieski

我尝试了命令:

awk '{while(getline a < "file2"); sub(/wzór1/, a); print }' file1
Bolek
jeden(niebieski)
Lolek
dwa(wzór2)
trzy(wzór3)

我想wzór1在“file2”的内容上替换“file1”。我想打印:

Bolek
jeden(czerwony
zielony
niebieski)
Lolek
dwa(wzór2)
trzy(wzór3)
4

2 回答 2

6

单程:

$ awk -v val="$(<file2)" '{sub(/wzór1/,val);}1' file1
Bolek
jeden(czerwony
zielony
niebieski)
Lolek
dwa(wzór2)
trzy(wzór3)

file2 的内容被读入变量“ cont”。这个变量被传递给awkwzor1,所有出现的 wzor1 都被变量内容替换。

于 2012-12-19T14:20:30.183 回答
3
awk 'NR==FNR{r=r s $0; s=ORS; next} {sub(/wzór1/,r)} 1' file2 file1

假设您在 UNIX 上,这是迄今为止发布的 2 个解决方案中的方法之间的区别,请注意“file2”末尾的空行:

$ cat file2
czerwony
zielony
niebieski

$ awk 'NR==FNR{r=r s $0; s=ORS; next} {sub(/wzr1/,r)} 1' file2 file1
Bolek
jeden(czerwony
zielony
niebieski
)                   <--- note the empty line is reproduced
Lolek
dwa(wzr2)
trzy(wzr3)
$ awk -v val="$(<file2)" '{sub(/wzr1/,val);}1' file1
Bolek
jeden(czerwony
zielony
niebieski)          <--- note the empty line has been removed
Lolek
dwa(wzr2)
trzy(wzr3)

如果您不在 UNIX 上,那么我认为 shell 解决方案将是 N/A 。

于 2012-12-19T14:31:40.453 回答