【问题标题】:substitute a text pattern in a bunch of files?在一堆文件中替换文本模式?
【发布时间】:2014-08-11 22:57:04
【问题描述】:

文件列表包含数千个文件名,例如:

./folder/folder/file.ext

对于列表中的每个项目,我应该编辑一个文件:用“new_text_pattern”替换文本模式“old_text_pattern”。 这个命令:

cat filelist | while read line; do sed -i 's/END_CREDIT_END/END_CREDIT/g' "$line"; done

给出一个错误:

sed: 1: "./folder ...": invalid command code . 

如何正确执行替换?谢谢。

【问题讨论】:

  • 你确定这是 Linux 而不是 OS X?
  • 如果任何文件名包含空格,这将不起作用。见stackoverflow.com/q/1574898/18157
  • @那个人,你说得对,是 os x

标签: macos bash sed


【解决方案1】:

OS X sed -i 不像 GNU sed -i。 OS X 需要一个参数。

cat filelist | while IFS= read -r line
  do sed -i bak 's/END_CREDIT_END/END_CREDIT/g' "$line"
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 2013-06-26
    • 2012-05-18
    • 2012-04-27
    • 2012-03-19
    • 2012-01-25
    相关资源
    最近更新 更多