我将如何使用 sed 和/或 awk/grep 来编辑匹配字符串后面的行?

刷子

我有一个需要一些更改的大文本文件。为此,我需要首先定位具有特定公共字符串的行,然后在此之后直接编辑该行。例如,如果我运行此grep命令:

# grep -A1 important_string gianttextfile.txt
important_string
change_this

我想首先定位important_string,然后修改change_this为其他东西,在整个文档中多次。我不能只修改所有change_this条目,因为其中许多条目需要保持原样,我只需要更改此特定字符串之后的那些条目。

实现这一目标的最佳方法是什么?

卡米尔·马乔罗夫斯基
sed '/important_string/ {n;s/change_this/new_value/}'

笔记:

  • 记住important_string并被change_this解析为正则表达式。

  • 没有s执行的任何行进行测试,因此无法触发下一行。这意味着一个像这样的片段:important_strings

    …
    foo                #  this line does not trigger s for the next line
    important_string   #  this line triggers s for the next line
    important_string   #  s is performed here
    change_this        #  s in not performed here
    …
    

    不会改变。始终测试的变体important_string

    sed ':start; /important_string/ {n;s/change_this/new_value/;b start}'
    
  • 如果s可以使important_string出现或消失,那么您可能需要important_string在替换前和/或替换后进行测试或者不测试是否s成功替换。这个答案并不涵盖所有这些情况。

  • s/…/…/g需要时使用

  • sed -i … file需要时使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用sed来查找和替换具有多个字符串的模式?

如何使用sed匹配和切割具有不同条件的字符串?

使用grep和sed查找和替换字符串

在查找和替换字符串中使用sed和sed进行查找和替换

如何删除字符串模式和该模式后面的所有字符串?

如何使用sed替换多个文件中特定行和字段中的字符串

使用sed在两行上编辑字符串

做 shell 脚本 Sed 和 Perl:使用 & 作为匹配的字符串

使用 sed 或 grep 获取 number 和 . 仅从字符串

使用sed查找和替换复杂的字符串

使用grep和sed替换字符串

使用字符串替换的sed和sudo

使用sed和regex查找并替换字符串

使用awk和sed在字符串中递增数字

使用sed或grep编辑字符串

仅当!exist存在时,才单独使用sed和sed在以特定字符串开头的行上进行替换。

如何使用tailf和sed填充和查看仅ip表日志的子字符串?

使用SED或AWK将字符串移动到新的列和行

我将如何使用sed命令删除文档中的文本?

使用sed来匹配anyString和[之间的任何字符和回车符

使用grep和sed编辑脚本

我将如何分配值在创建对象,这需要字符串和ArrayList值PARAMS?

如何使用sed编辑以字符串形式保存的文件?

如何使用sed通过灵活的键和值来更改我的配置文件?

sed如何逃脱”(和特殊字符转义

替换特殊字符 [ 和 ] 包括 . 使用 sed

使用find和sed删除行尾的字符

如何使用sed和regex查找并替换文件中存在的字符串?

如何使用文件夹路径进行sed和替换字符串