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

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

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

user1
user2
user3

现在我有另一个名为“搜索”的文件,其中有一个名为“所有者 = 用户”的特定字符串

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

那么是否可以根据用户文件找到所有用户并将这些用户重命名为[电子邮件受保护]?例如

owner = [email protected]
random text
random text
owner = user15
random text 
random text 
owner = [email protected]

我使用 ack 命令和 cat 命令得到了一些工作,但我是编程新手,所以我无法获得正确的输出。我的想法如下,但它并没有真正满足我的需要。非常感谢任何帮助。

cat users | xargs -i sed 's/{}/moo/' searches

答案1

尝试 awk:

awk 'NR == FNR {SRCH[$1]; next} $NF in SRCH {$NF = $NF "@domain.com"} 1'   users searches
owner = [email protected]
random text
random text
owner = user15
random text 
random text 
owner = [email protected]

users如果用户在文件中找到,它会添加附录。

答案2

使用awk

awk '
  NR==FNR{users[$0]=$0"@domain.com"}
  NR>FNR && $1 == "owner" && $3 in users { $3=users[$3]; }
  NR>FNR
' users searches

要直接编辑文件,请附加> searches.tmp && mv searches.tmp searches

相关内容