Можно ли найти и заменить строку в файле ИЛИ добавить строку в конец, если ее там нет?
Я знаю, что могу использовать это, чтобы найти и заменить:
sed -i -e "s/^SEARCH/LINE 1\nLINE 2/" file
Я знаю, что могу дополнить файл следующим образом:
cat << EOF | tee -i file1 file2
LINE 1
LINE 2
EOF
Можно ли это как-то совместить. Поэтому, если /^SEARCH.*$/
соответствует, замените его, если нет, добавьте замену в конец файла.
Обновить с помощью лучшего примера ввода/вывода:
Например, если бы у меня был этот входной файл testfile
:
Alpha
Bravo
Charlie
Допустим, я хотел найти и заменить Bravo
на Bravo=bingo
, ИЛИ добавить Bravo=bingo
, если Bravo
там нет, ожидаемый результат:
Alpha
Bravo=bingo
Charlie
Это связано с тем, что в файле существует Bravo
, поэтому он заменяется.
Допустим, я хотел найти и заменить Delta
на Delta=bingo
, ИЛИ добавить Delta=bingo
, если Delta
там нет, ожидаемый результат:
Alpha
Bravo
Charlie
Delta=bingo
Это связано с тем, что Delta
отсутствует в файле, поэтому он добавляется.
s
предназначена для определения, наконец, добавить или нет. 03.02.2019