URLを羅列したファイルからsitemap.xmlを作るために、sedを使おうとした。
[user@localhost ~]% sed -E -e "s/^/<\/loc>\n\t<\/url>\n\t<url>\n\t\t<loc>/g" sitemap.txt
</loc>nt</url>nt<url>ntt<loc>http://example.com/index2.html
…
メタ文字(\tや\n)がまったく認識されていない。 Googleで原因を検索してみると、sedによってはメタ文字に対応していないようである。(メタ文字に対応するために、何らかの拡張機能を入れているとか何とか…)
回避措置として、perlで処理するスクリプトを書いてみる。
makesitemap.pl
#!/usr/bin/perl
use strict;
# テキスト形式のsitemapファイル(入力)
my $strInFileName = './sitemap.txt';
# ファイルから一時的にデータを読み込む配列
my @aryData = [];
my $strTmp;
# ファイルハンドル
my $hFile;
if(!open($hFile, $strInFileName))
{ # ファイルが開けない場合
print "ファイルが開けません\n";
exit;
}
@aryData = <$hFile>;
close($hFile);
foreach $strTmp (@aryData) {
$strTmp =~ s/\n//g;
$strTmp =~ s/^/<\/loc>\n\t<\/url>\n\t<url>\n\t\t<loc>/g;
print $strTmp;
}
1行で済むところが、20行くらい書かないといけない…
==参考文献など==
sedの文字列置換
http://www.gcd.org/sengoku/sedlec/
http://www.ishilab.net/~ishihara/tips/sed.txt
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230879/
http://www.kabipan.com/computer/sed/
Perlの文字列置換
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_k08.htm