【问题标题】:recursive grep and sed [duplicate]递归grep和sed
【发布时间】:2015-05-06 03:38:20
【问题描述】:

文件1:

   some line1
   some line2
   text1    text2   text3
   some line3
   text1    text2   text4
   some line3

我想只在有 text3 的行中用 say NEW 替换 text1

最终输出应该是

   some line1
   some line2
   NEW      text2   text3
   some line3
   text1    text2   text4
   some line3

我正在尝试使用 grep 和 sed,但没有帮助。

任何帮助表示赞赏。

【问题讨论】:

  • 你要求做的事情没有递归。
  • 你读过任何关于 sed 的手册/doc/jelp/man 吗?

标签: bash awk sed grep


【解决方案1】:
$ sed '/text3/s/text1/NEW/' file
   some line1
   some line2
   NEW    text2   text3
   some line3
   text1    text2   text4
   some line3

$ awk '/text3/{sub(/text1/,"NEW")}1' file
   some line1
   some line2
   NEW    text2   text3
   some line3
   text1    text2   text4
   some line3

【讨论】:

    【解决方案2】:

    你可以使用sed:

    sed '/text3/s/text1/NEW/g' file
    some line1
    some line2
    NEW    text2   text3
    some line3
    text1    text2   text4
    some line3
    

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 2014-02-05
      • 2011-01-17
      • 2013-10-19
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多