【问题标题】:sed + replace only if match the first word in linesed + 仅当匹配行中的第一个单词时才替换
【发布时间】:2011-03-20 23:52:51
【问题描述】:

以下 sed 命令将 OLD 字符串替换为 NEW 字符串。 我的目标是将OLD 替换为NEW,仅当COMMAND 单词出现在该行的第一个单词时。 仅当 COMMAND 是行中的第一个单词时,如何修复我的 sed 语法以便用 NEW 替换 OLD? (注意:COMMAND 单词位置可能在行首的一些空格之后。)

莉迪亚

sed "/^ *#/b; /COMMAND/ s/OLD/NEW/g"  file

  COMMAND OLD
  OLD COMMAND

sed 执行后:

  COMMAND NEW
  NEW COMMAND

【问题讨论】:

    标签: sed


    【解决方案1】:

    awk解决方案

    awk '{if($1=="COMMAND") $2="NEW";print}' temp.txt

    【讨论】:

      【解决方案2】:
      "/^[ \t]*COMMAND/ s/OLD/NEW/g"
      

      【讨论】:

        【解决方案3】:

        试试这个:'s/^(\s*COMMAND) OLD(.*)$/\1 NEW\2/'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-03
          • 2012-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-19
          相关资源
          最近更新 更多