【问题标题】:How will i use sed shell script for replacing a pattern in a list of file我将如何使用 sed shell 脚本替换文件列表中的模式
【发布时间】:2014-07-08 10:32:50
【问题描述】:

我有大约 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

在每个文件数据中,我想用RAHUL2替换所有出现的术语RAHUL

【问题讨论】:

    标签: shell unix sed grep


    【解决方案1】:

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

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

    如果您使用sed -i,请备份原始文件,但不确定该命令是否已经运行。这是因为sed -i 将覆盖原始文件。您已收到警告。

    【讨论】:

      【解决方案2】:

      如果您想在C:/desktop 目录中搜索与file*.txt 模式匹配的所有文件,hek2mgl 的回答很好。

      现在您已经有了一个包含要编辑的文件列表的文件,下面是另一种方法:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-17
        • 1970-01-01
        • 2016-05-07
        相关资源
        最近更新 更多