需要通过 bash 脚本将一个字符串与文件中的另一个字符串交换



我需要在 Linux 文件中用另一个关键字/字符串替换关键字。

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

在这里,我想替换或交换索引.html到索引.php在第二行,或者我想优先考虑索引.php代替索引.html并放置索引.html代替索引.php。

我必须通过 shell 脚本执行上述任务,为此我已经尝试了该命令:

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

但它没有保存在文件中,即 abc.txt我想在其中更改内容。

请让我知道我做错了什么。

对于任何命令cmd,要更新原始文件:

cmd file > tmp && mv tmp file

如果你使用的是GNU awk,你可以改用awk -i inplace '...' file,它会在内部为你做上述事情,就像sed -iperl -i等一样。

您只需sed即可做到这一点:

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

这将用abc.txt中的index.php替换index.html的所有,并将abc.txt原始内容的副本保存在abc.txt.bak上。

另一个选项是使用以下perl命令:

perl -pi -w -e 's/index.html/index.php/g;' abc.txt

最新更新