我正在寻找一个Linux命令行实用程序,它可以进行文本替换(比如sed或sd),并且能够自动将搜索和替换模式扩展到具有不同的单词分隔方法的字符串。所谓词分离,我指的是词之间的连字符/下划线/空格、camelCase、UpperCamelCase等。
因此,如果您告诉它将an example string替换为another example string,它可以用用户的最小努力(例如添加一些CLI选项),将an-example-string替换为another-example-string,anExampleString替换为anotherExampleString,等等。
其他搜索关键词:保用实例替换
发布于 2022-12-17 03:40:30
如果你给它一个合适的模式,sed就能做到这一点。
sed -i 's/\(an\)\([^a-zA-Z]?\)\(example\)\([^a-zA-Z]?\)\(string\)/another\2\3\4\5\6/'显然,我在分组方面做得太过火了,在这个例子中,您可以使用
sed -i 's/an\([^a-zA-Z]?example[^a-zA-Z]?string/another\1/'关键是,您可以将输入拆分到“单词”和“单词分隔符”中,然后将它们重新组合起来。有趣的问题是,我们能否编写一个程序来为您编写sed脚本,我相信答案是“不行”。
不明显的是,你会想要把“一只害群之马”映射成“红黄牛”。我可能会猜到,你想要的是基于名词和形容词的“->”--“->”--“红色和黄色”和“绵羊”--“->”--牛,但这无助于"ACamelShip“-> "Xyzzy in motion”。
博士
sed可以做你想做的事情,但是我不能给你一个自动工具来正确地完成你想要的事情,因为问题是没有明确规定的。
发布于 2022-12-19 22:52:54
就像往常一样,我最终写了我自己想要的草稿:https://gitlab.com/smheidrich/cawspr
请随时打开有关功能缺失或错误的问题,并提交合并请求。
https://softwarerecs.stackexchange.com/questions/84786
复制相似问题