用sed或replace替换文件中的特定模式

时间:2014-09-27 12:38:16

标签: regex linux replace sed

在我的站点地图文件中,我想用_(下划线)替换:(冒号)。但我不想替换其他文件:例如时间戳等文件。

我的行

    <sitemap><loc>http://www.example.com/sitemap_2014-09-27_09:42:43_1.xml.gz</loc>
<lastmod>2014-09-27 09:42:43</lastmod></sitemap>

在这一行&#34; sitemap_2014-09-27_09:42:43_1.xml.gz&#34;应成为&#34; sitemap_2014-09-27_09_42_43_1.xml.gz&#34;但是时间戳不应该影响。

我是sed和模式的新手。有人可以提供sed或replace或任何其他linux命令来替换文件中的这种模式。

1 个答案:

答案 0 :(得分:0)

你可以试试这个GNU sed命令,

sed -r 's/([^ ])([0-9]{2}):([0-9]{2}):([0-9]{2})/\1\2_\3_\4/g' file

通过基本的sed,

sed 's/\([^ ]\)\([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)/\1\2_\3_\4/g' file