是否可以使用 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 命令替换仅给出前几个和最后几个单词的给定字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何grep和替换

如何grep和替换

Linux中的find和grep命令对查找到的文件如何处理啊

linux中grep和find的区别

Linux下find命令和grep命令查找文件

linux命令行怎么查看指定文件在哪