使用另一个文件中的模式替换文件中的字符串



我需要使用带有模式的另一个文件(例如字符串数据库)替换许多文件中的许多字符串。它用于匿名文件。

示例:

文件#1:

"Administrator";"512";"Built-in account for administering the computer/domain";"False";"False";"Administrator";"True";"True";"True";"S-1-5-21-3445027559-693823181-3401817782-500";"User";"OK";"23. 1. 2012 9:41:34";"20. 1. 2012 16:01:33";"10";"True";*

文件#2(模式文件):

Guest;user1
Administrator;user2
system;user3

文件#1中的输出需要为

"user2";"512";"Built-in account for administering the computer/domain";"False";"False";"user2";"True";"True";"True";"S-1-5-21-3445027559-693823181-3401817782-500";"User";"OK";"23. 1. 2012 9:41:34";"20. 1. 2012 16:01:33";"10";"True";

由于文件1的内容是可变的,因此在我的情况下,使用一些正则态度不起作用。我试图使用grep进行查找,但它也没有起作用。


到目前为止,我尝试了这个

find file1.txt -type f -exec sed -f patt.regular {} ;

patt.regular就是这样:

s/10.30.8.204/XX.YY.8.204/g

不幸的是,它不起作用,我有可疑的,该源文件格式file1.txt有一些问题,因为什么也不会发生,但是当我删除原始文件(file1.txt)并创建新的文件时,似乎还可以

sed可能会遇到一些格式问题?

在外壳中,

for line in $(cat file2.txt); do sed -i "s/$(echo $line | cut -d ';' -f 1)/$(echo $line | cut -d ';' -f 2)/g" file1.txt; done

做你想要的。它需要称为file1.txtfile2.txt并驻留在当前目录中。

这对file2.txt中的每一行进行sed

相关内容

  • 没有找到相关文章

最新更新