【问题标题】:Sed command for recursive find and replace failing用于递归查找和替换的 Sed 命令失败
【发布时间】:2012-12-30 22:51:30
【问题描述】:

我正在我的OSX 上尝试递归查找和替换命令:

find . -type f -name '*.*' -exec sed -i '' s/Renseigner votre question en 140 caractères max/Renseigner votre question en 140 caractères max./ {} +

但我得到了这个:

sed: 1: "s/Renseigner": unterminated substitute pattern
sed: 1: "s/Renseigner": unterminated substitute pattern

有人知道为什么吗?

【问题讨论】:

  • 解决了,我只需要逃离空白!
  • 不,这是错误的做法,因为除了处理空格之外,还有更多的陷阱。将您的替换放在单引号中:'s/foo/bar/'.

标签: linux macos sed replace


【解决方案1】:

在 sed 命令周围加上引号。

【讨论】:

  • 感谢您的回复,但我设法使它工作。顺便说一句,您知道如何编写脚本来输入要查找和替换的字符串,例如: #!bin/bash find 。 -type f -name '.' -exec sed -i '' s/$1/$2/ {} + 有意义吗,然后我怎样才能在shell中输入字符串?
  • @user1611830 是的,然后使用双引号。
  • 你的意思是双引号将 "$1" 和 "$2" 括起来?
  • 不完全是:如果您的字符串很简单,"s/$1/$2/" 可能就足够了。
猜你喜欢
  • 2018-10-01
  • 2012-12-29
  • 1970-01-01
  • 2018-06-25
  • 2018-03-10
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多