【问题标题】:Whether it is possible by using grep or find command to replace the given string given only first few and last few words是否可以使用 grep 或 find 命令替换仅给出前几个和最后几个单词的给定字符串
【发布时间】: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。”

【问题讨论】:

    标签: sed grep find


    【解决方案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 个文件。
    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 2015-02-17
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多