Предположим, что есть текстовый файл, как показано ниже:
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