sed 's/this/that /' — игнорирующий g, но все еще заменяют весь файл

как сказанный заголовок, я пытаюсь изменить только первое вхождение слова. При помощи sed 's/this/that /' file.txt

хотя я не использую g опцию, она заменяет весь файл. Как зафиксировать это.?

ОБНОВЛЕНИЕ:

$ cat file.txt 
  first line
  this 
  this 
  this
  this
$ sed -e '1s/this/that/;t' file.txt 
  first line
  this  // ------> I want to change only this "this" to "that" :)
  this 
  this
  this
5
задан zaf 2 June 2010 в 09:39
поделиться

1 ответ

http://www.faqs.org/faqs/editor-faq/sed/

4.3. Как изменить только первое вхождение шаблона?

sed -e '1s/LHS/RHS/;t' -e '1,/LHS/s//RHS/'

Где LHS = this, а RHS = that для вашего примера.

Если вы знаете, что шаблон не встречается в первой строке, опустите первый -e и следующий за ним оператор.

6
ответ дан 14 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: