2017-04-08 13 views
1

sedを使ってcolumn2(end TLD)の正規表現とファイルをソートしようとしています。sedを使ってregexで行を並べ替える方法

これは、例えばファイルです:

server7, server.com,someval 
server6, server.com, someval 
server4, server.uk, someval 
server2, server.com, someval 
server10, server.us, someval 
server7, server.uk, someval 
server10, server.uk, someval 
server10, server.us, someval 

私が試してみた:

sed -r "s/(.*\.com.*)|(.*\.uk.*)|(.*\.us.*)/\3\2\1/g" file 

しかし、それは何の変更を行っていない、同じ出力を再現します。私は私のファイルは次のようにソートすることにしたい

server7, server.com,someval 
server6, server.com, someval 
server2, server.com, someval 
server10, server.us, someval 
server7, server.uk, someval 
server10, server.uk, someval 
server10, server.us, someval 
server10, server.us, someval 

は助けてくれてありがとう。

+0

をソートされたさまざまなツールを使用するためのオープンなようです。ツール "ソート"を使用できますか? – Yunnosch

+0

要するに、あなたはTLDによって 'ソート'したいですか? – jm666

+0

はい@ jm666。 "awk -F"、 "{if($ 2〜/\.com/)print} {if($ 2〜/\.us/)print} 'ファイル'を印刷するようなことはできますが、私はそれを考えません右です。 – fugitive

答えて

3

あなたがフィールドセパレータとして.を使用することができる場合は、ファイルを並べ替えることができ、同様に:

sort -t. -k2,2 file 

(もちろん)上記はラインに.ドットの同じ数を持っている必要があります(少なくとも、最初の2つの列に)。

編集で言っmklement0 @として:それは関心の フィールドに並べ替えを制限する(より効率的に、より堅牢な)きれいだ

- あなたの場合:ので、代わりにプレーン-k2-k2,2を使用して優れていますエンドフィールドを指定しない、ラインの終わりまですべて

関連する問題