【问题标题】:SED / AWK multi-file replacement?SED/AWK 多文件替换?
【发布时间】:2012-01-25 15:42:42
【问题描述】:

我一直在尝试找出一个可以搜索超过 13 个文件并替换的命令 表单数据的所有匹配和差异,并将它们替换为表单数据增强功能。

诀窍是可以有 [whitespace] - 或 _ 作为我想要的分隔符 保留。我正在运行表单命令行,所以我相信我可以多次运行这个脚本 次并将其指向文件,或者如果有办法捕获目录中的所有文件 (甚至包括目录名称)它可能会更容易。

我相信它的曲调

sed "s/forms_data/form-data-enhancements/g ; s/forms-data/form-data-enhancements/g ; s/forms data/form data enhancements/g" oldfile > newfile

我不确定.....

差异可能是

表单数据

forms_data

表格数据

等等。有人介意分享一些 sed awk 智慧吗?我能找到的最好的方法是一种称为 arrary replace 的东西,但无法获得有关如何使用它的任何信息。

非常感谢。

【问题讨论】:

  • 这太笼统了,无法采取行动。如果您包含实际(但简短)的样本输入和所需的输出,您将获得更好的响应。祝你好运。

标签: regex sed awk


【解决方案1】:

这对你有用吗 -

sed -i 's/\<forms[ -_]data\>/form data enhancements/g' /path/to/files*

-i 将进行文件内替换。所以首先选择一个文件并运行不带-i 选项的命令。如果一切正常,您可以继续使用-i

更新:

如果你想保留分隔符,那么你可以这样做 -

sed -i 's/\<forms\([ -_]\)data\>/form\1data\1enhancements/' /path/to/files*

【讨论】:

  • Jaypal 我不需要一种方法来继承 [ -_] 以包含在表单数据增强功能中吗?
  • 如果出现问题,或者使用-i.bak 选项保留扩展名为.bak 的备份文件。
  • 根据您的问题,您想replace all matches and variances of forms data and replace them with form data enhancements。 [ -_] 是一个匹配所有差异的字符类。您希望保留单词分隔符吗?
  • 我愿意,我想确保携带它们,因为这是针对drupal程序的,它们对分隔符非常敏感。
  • sed -i -e 's/\/form{b;}data{b;}enhancements/g' /path/to /files* 什么的,对吧?
猜你喜欢
  • 2011-01-23
  • 1970-01-01
  • 2016-10-29
  • 2013-05-30
  • 1970-01-01
  • 2014-02-05
  • 2021-09-14
  • 2017-09-06
  • 2020-10-29
相关资源
最近更新 更多