是否可以使用 grep 或 find 命令替换仅给出前几个和最后几个单词的给定字符串
Posted
技术标签:
【中文标题】是否可以使用 grep 或 find 命令替换仅给出前几个和最后几个单词的给定字符串【英文标题】:Whether it is possible by using grep or find command to replace the given string given only first few and last few words 【发布时间】:2020-08-30 21:50:27 【问题描述】:示例:
string : "Hello world XX GM, Super." 其中 XX 在所有文件中可以是不同的数字。
输入:Hello world *Super。 运行 grep 或 find 命令后。 (例如..find -type f -exec ex -sc '%s/Hello world *Super./ 你好世界 100 GM,超级。/g' -cx ';')
每个文件中的输出应替换为:“Hello world 100 GM, Super。”
【问题讨论】:
【参考方案1】:grep
是查找事物的正确工具(使用正则表达式)。它通常不是编辑行的工具。
编辑的正确工具是sed
。在最简单的假设下,每一行最多可以出现一次“Hello world”,然后最多出现一次“Super”,并且“words”必须是完整的单词(因此:“Hello world Peace”不是匹配,而“超人”不匹配),你可以这样做
$ sed -i 's/\bHello world\b.*\bSuper\b/Hello world 100 GM, Super/' files
-i
标志表示“就地编辑”(替换文件本身中的文本),\b
要求在正则表达式中出现的特定位置有一个单词边界。
【讨论】:
非常感谢 mathguy。它可以帮助我轻松替换 100 个文件。以上是关于是否可以使用 grep 或 find 命令替换仅给出前几个和最后几个单词的给定字符串的主要内容,如果未能解决你的问题,请参考以下文章