我将如何使用sed shell脚本替换文件列表中的模式

时间:2014-07-08 10:32:50

标签: shell unix sed grep

我有100个文件,里面有我的名字,RAHUL。我希望将其替换为另一个术语RAHUL2。我有一个包含文件列表的文件,我想在sed中获取它来进行更改。

文件:

C:/desktop/file1.txt
C:/desktop/rahul/file1.txt
C:/desktop/rahul/file3.txt
C:/desktop/rahul/file4.txt
C:/desktop/rahul/file6.txt
C:/desktop/rahul/file8.txt
C:/desktop/rahul/file9.txt

并且在每个文件数据中,我想用RAHUL

替换术语RAHUL2的所有出现

2 个答案:

答案 0 :(得分:0)

我假设你在Windows上使用了一些Cygwin环境,因为你有sed。然后,您可以使用find列出所有文件并在其上执行sed

find C:/desktop -type f -name 'file*.txt' -exec sed -i 's/RAHUL/RAHUL2/g' {} \;

如果您使用的是sed -i,请备份原始文件但不确定该命令是否正常工作。这是因为sed -i将覆盖原始文件。你被警告了。

答案 1 :(得分:0)

如果您想在file*.txt目录中搜索匹配C:/desktop模式的所有文件,那么

hek2mgl的答案很好。

现在,由于您已经有一个包含要编辑的文件列表的文件,因此这是另一种方法:

while read FILE ; do sed -i 's/RAHUL/RAHUL2/g' $FILE ; done < files_to_edit.txt

read命令将逐行读取您的输入。输入为files_to_edit.txt文件,由<输入重定向运算符指示。

关于-i选项的备注仍然有效:它会编辑你的文件,所以进行备份,或者至少先在几个文件上运行它(可能没有-i选项,只是为了检查输出是什么)。