www.
URLがまたはで始まる場合は、m.
その部分が存在しないか、ソートに関連していないと仮定して、ソートが実行されるようにファイルのURLリスト(URL /行1行)をソートしたいと思います。どんな提案がありますか?
はい
facebook.com###page
fahrrad.de###userlike-popup
m.facebook.com##.cx
www.facebook.com##body
www.fahrrad.de###userlike-footerbar
ソートされたファイルは次のとおりです。
www.facebook.com##body
m.facebook.com##.cx
facebook.com###page
www.fahrrad.de###userlike-footerbar
fahrrad.de###userlike-popup
説明する
facebook.com
fahrrad.de
h前のcよりも優先します。www.facebook.com##body
m.facebook.com##.cx
b
以前のように.
m.facebook.com##.cx
facebook.com###page
.
以前のように#
www.fahrrad.de###userlike-footerbar
fahrrad.de###userlike-popup
fよりpの前に来る
ベストアンサー1
スキップしたい部分の後にいつでも文字を追加し、そこからソートを開始できます(その後、文字を削除)。
sed
そのオプションをサポートしている場合-E
(最新バージョンのGNUはsed
これを行い、以前のバージョンではなくこれを実行します-r
が、GNU以外の実装では移植性が低下します):
<file sed -E 's/^(www\.|m\.)?/&:/' | sort -t: -k2 | sed 's/://'
awk
または、以下を使用して同じことを実行できますperl
。
<file awk '{sub(/^(www\.|m\.)?/, "&:"); print}' | sort -t: -k2 | sed 's/://'
<file perl -pe 's/^(www\.|m\.)?/$&:/' | sort -t: -k2 | sed 's/://'
POSIXを使用しても、sed
いつでも次のことができます。
<file sed -e 's/^www\./&:/;t' -e 's/^m\./&:/;t' -e 's/^/:/' |
sort -t: -k2 | sed 's/://'
または.
、Norで始まらない行の先頭にを追加し、最初の部分の後に部分を並べ替えることもできます。www.
m.
.
<file sed -e '/^www\./b' -e '/^m\./!s/^/./' | sort -t. -k2 | sed 's/^\.//'