
Возможно ли это? Я где-то читал, что следующая команда это сделает:
sed -e [команда] [файл]
но, похоже, он сделал то же самое, что и просто
sed [команда] [файл]
(изменения не сохранились). Есть ли способ сделать это с помощью sed?
решение1
Я думаю, вы ищете -i
:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Например:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Если указать суффикс, будет создан файл резервной копии:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
Входной файл изменяется и создается резервная копия, содержащая исходные данные файла.
Также обратите внимание, что это для GNU sed
, естьнебольшие различияв формате между различными sed
реализациями.
решение2
Эти решения работают для HPUX (UNIX):
1.
{ rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh
:
2.
perl -pi -e 's/Error/NO_Error/g' test1.sh
3.
sed 's/Error/NO_Error/g' test1.sh | tee test1.sh
решение3
-e
опция предназначена для выполнения нескольких sed
команд
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
рассматривать file.txt
как
linux os
тогда О/П есть
unix os
-i
опция сохраняет изменения навсегда...