根据另一个文件编辑文件中的特定字符串

Edit a particular string in a file based on another file

您好,我有一个名为用户的文件。在该文件中,我有一个用户列表,例如

user1 user2 user3

现在我有另一个名为 searches 的文件,其中有一个名为 owner = user 的特定字符串,例如

owner = user1
random text 
random text
owner = user15
random text
random text
owner = user2

那么是否可以根据用户文件找到所有用户并将这些用户重命名为 user@domain.com ?例如

owner = user1@domain.com
random text 
random text
owner = user15 
random text
random text
owner = user2@domain.com

目前我正在做的是像下面这样的漫长的手动过程

awk '/owner = user1|owner = user2|owner = user3/{print [=13=] "@domain.com"; next}1' file

它确实有效,但对于大文件我必须花很长时间创建此命令。

鉴于:

$ head users owners
==> users <==
user1 user2 user3

==> owners <==
owner = user1
random text 
random text
owner = user15
random text
random text
owner = user2

你可以使用这个 awk:

awk 'BEGIN{FS="[ \t]*=[ \t]*|[ \t]+"}
FNR==NR{for (i=1;i<=NF;i++) seen[$i]; next}
/^owner[ \t]*=/ &&  in seen{sub(,  "@domain.com") } 1' users owners

打印:

owner = user1@domain.com
random text 
random text
owner = user15
random text
random text
owner = user2@domain.com