Добавить текст к первому вхождению шаблона с помощью sed

Добавить текст к первому вхождению шаблона с помощью sed

Предположим, что есть текстовый файл, как показано ниже:

Hello world
types=""
Mario
types="Game"

Я хочу найти первое вхождение type=""и добавить слово "program". Мне нужен вывод в виде:

Hello world
types="program"
Mario
types="Game"

Мне нужно использовать это в скриптах оболочки Unix. Я попробовал:

sed -i '1,/types=""/s/types=""/types="program"/' filename

Как выглядит команда, она только вставляет, а не добавляет. Я пробовал добавлять a\, но это все еще не работает.

решение1

Ваша sedоднострочная замена, похоже, уже работает так, как вы и задумали:

$ cat t.txt
Hello world
types=""
Mario
types="Game"

$ sed '1,/types=""/s/types=""/types="program"/' t.txt

Hello world
types="program"
Mario
types="Game"

Возможно, стоит отредактировать ваш вопрос, чтобы показать, чтотыполучить при запуске sedкоманды (без -iопции, чтобы результаты выводились на терминал).

Кстати, ваш диапазон 1,/types=""/избыточен. Вы можете упростить его так:

sed '/types=""/s/types=""/types="program"/' t.txt

Связанный контент