sed + replace только если соответствует первому слову в строке - PullRequest
2 голосов
/ 26 июля 2010

Следующая команда sed заменяет строку OLD на строку NEW. Моя цель - заменить OLD на NEW, только если слово COMMAND появляется в качестве первого слова в строке. Как исправить мой синтаксис sed, чтобы заменить OLD на NEW, только если COMMAND является первым словом в строке? (Примечание: COMMAND местоположение слова может быть после некоторых пробелов от начала строки.)

1012 * Lidia *

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

  COMMAND OLD
  OLD COMMAND

после sed exe:

  COMMAND NEW
  NEW COMMAND

Ответы [ 3 ]

10 голосов
/ 26 июля 2010
"/^[ \t]*COMMAND/ s/OLD/NEW/g"
1 голос
/ 26 июля 2010

попробуйте это: 's/^(\s*COMMAND) OLD(.*)$/\1 NEW\2/'

0 голосов
/ 20 января 2013

awk раствор

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

...