4

sed を使用して、sitemap.xml を作成する前に、txt ファイルからブログ エントリを照合して削除しようとすると問題が発生します

# Contents of filename:
# http://www.example.com/2008/10/article3.html
# http://www.example.com/2009/11/article7.html

#!/bin/bash
hostName="www.example.com"
hostTLD="$(echo ${hostName}|cut -d . -f 3)" # results in "com"

sed -i '/\.'"${hostTLD}"'\/\([0-9]{4}\)\/\([0-9]{2}\)/d' filename

年/月のビットを一致させる方法がわかりません。「.TLD/年/月/」を含むすべての行を削除したい

別の一致で使用しているため、 $hostTLD 部分が機能することはわかっています。

sed -i '/\.'"${hostTLD}"'\/category\//d' filename # works! ".TLD/category/"
4

1 に答える 1

1

あなたは近くにいましたが、sedコマンドを二重引用符で囲み、中括弧をエスケープする必要がありました。代わりにこれを試してください:

sed -i "/\.$hostTLD\/[0-9]\{4\}\/[0-9]\{2\}/d" filename

2 番目のコマンドでは、これを使用します。

sed -i "/\.$hostTLD\/category\//d" filename
于 2012-12-13T02:22:30.783 に答える