Необходимо поменять строку с другой строкой в ​​файле с помощью bash-скрипта - PullRequest
0 голосов
/ 28 марта 2019

Мне нужно заменить ключевое слово другим ключевым словом / строкой в ​​файле Linux. то есть

IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml 
index.htm
</IfModule>

Здесь я хочу заменить или заменить файл index.html на index.php во 2-й строке или установить приоритет index.php вместо index.html и поместить index.html вместо index.php.

Я должен выполнить вышеупомянутую задачу через скрипт оболочки, и для этого я уже попробовал команду:

awk 'NR==2 { t = $2; $2 = $5; $5 = t; print; } ' abc.txt

Но это не сохранение в файле, т. Е. Abc.txt, в котором я хочу изменить содержимое.

Пожалуйста, дайте мне знать, что я делаю не так.

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

Вы можете сделать это, просто sed:

 sed -i.bak 's/index.html/index.php/g' abc.txt

Это заменит ВСЕ вхождения index.html на index.php в abc.txt и сохранит копию abc.txt оригинального содержимого на abc.txt.bak.

0 голосов
/ 28 марта 2019

другая опция с приведенной ниже командой perl:

perl -pi -w -e 's/index.html/index.php/g;' abc.txt
0 голосов
/ 28 марта 2019

Для любой команды cmd, чтобы обновить исходный файл:

cmd file > tmp && mv tmp file

Если вы используете GNU awk, вы можете вместо этого использовать awk -i inplace '...' file, и он сделает то же самое для вас, как и sed -i, perl -i и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...