regex - SED/AWK 多文件替换?

标签 regex sed awk

我一直在尝试找出一个命令来搜索 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

forms_data

forms data

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

非常感谢。

最佳答案

这对你有用吗 -

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*

关于regex - SED/AWK 多文件替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979295/

相关文章:

java - 如何匹配字符串中间或末尾的字符但只匹配一次

regex - awk regex 我怎样才能匹配或捕获这个字符串

regex - linux中使用diff awk grep和正则表达式获取最近添加的驱动器名称

awk - 比较两个文件并打印同一行的程序

c++ - 具有 unicode 属性支持的 Qt/C++ 正则表达式库

java - 正则表达式忽略某些模式

c# Regex 删除少于 3 个字母的单词?

regex - 通过匹配模式用另一个文本文件中的行替换字符串

awk - 如何在不拆分配对数据的情况下将 VIM 中的文本文件调整为两列而不是三列?

bash - 如何使用 sed、awk 或同时使用这两种工具从 dig 查询中提取 mx 记录