
У меня есть два файла со скриптами, скажем, file1
и file2
. Я хочу взять содержимое file1
, изменить символ a
на A
in file1
и добавить вывод в , file2
не изменяя содержимое file1
. Я пытаюсь сделать следующее:
sed -i ‘s/a/A/g’ file1 >> file2
но это просто меняет a
на A
в file1
.
решение1
Просто снимите -i
флаг:
sed 's/a/A/g' file1 >> file2
Флаг -i
используется для редактирования указанного файла на месте, поэтому он делает именно это file1
. Изman sed
:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Причина, по которой вы не получаете ничего добавленного к , file2
когда используете , -i
заключается в том, что >>
используется для добавления stdout
к указанному файлу. Но поскольку file1
редактируется на месте из-за -i
, вывод не генерируется, поэтому ничего не добавляется к file2
.