【问题标题】:Linux - How can i replace some string with same string enclosed with braces?Linux - 如何用大括号括起来的相同字符串替换一些字符串?
【发布时间】:2017-06-07 14:59:37
【问题描述】:

我在目录中有一些文件,当我 grep 一些字符串时,我得到如下结果。

脚本/文件替换> grep -r "case" *

dir1/file2:case 'a'

dir2/file3:案例“ssss”

file1:案例 1

在我使用 replace cmd 后,我希望文件中的字符串更新如下

案例('a')

案例(“ssss”)

案例(一)

即,“case”替换为“CASE”,空格后的文字如上用大括号括起来。

任何建议我如何使用 shell cmd 做到这一点。

【问题讨论】:

  • 您可以使用find + sedgrep -rlZ...|xargs -0 sed..

标签: linux shell sed


【解决方案1】:

您可以使用sed 及其替代:

find . -type f -exec sed -i 's/case \(.\+\)/CASE (\1)/' {} +
  • .\+ 匹配任何至少包含一个字符的内容。
  • \(...\) 创建一个捕获组,您可以将第一个捕获组引用为\1
  • 使用-i~ 而不是-i 运行将创建文件备份;如果您只是在尝试,特别推荐。

【讨论】:

  • @Sundeep:我不确定case 是否应该替换为CASE ()
  • 是的,这是一个极端情况,但 OP 确实单独使用了 casegrep..
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2017-08-04
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多