2017-10-03 15 views
2

私は、大量のドメインを持つテキストファイルを持っています。これらの拡張子ではないすべてのドメインを削除します:特定のテキストが含まれていない行を削除する

.com 
.net 
.org 
.biz 
.us 

私はいくつかの方法を試しましたが、何も動作していないようです。私が取り組んでいる主な問題は、特定の行が削除されていないことです。

test.com 
example.com.br 
testing.net 
:これはファイルだったら...

彼らはラインで.comを持っているので、例えば

.com.brで終わるドメインが削除されていないが、私は実際にそれらを削除したいです

そして、それはこのになる必要があります。sedでこれを行うための方法が、私Jがなければならないよう

test.com 
testing.net 

それはそうですUSTはそれを動作させることはできません。

sed '/.com$\|.net$\|.org$\|.biz$\|.us$/!d' *.txt 

任意の助けをいただければ幸いです:/

これは私がやってみましたものです。ありがとう!

+0

私は試した最新の方法を追加しました: '' sed '/.com$ \ | .net $ \ |。 org $ \ | .biz $ \ | .us $ /!d '* .txt' – Justin

+0

あなたはそれをうまくやっていると思います。ちょうど 'sed'に' -r'フラグを付けるだけです – whoan

答えて

0

ないあなたが実際のデータと、お使いの環境でawkを使用できるかどうか、確認してください、下に与えられた入力のために働くべきである:

$ cat domain_ext_file 
.com 
.net 
.org 
.biz 
.us 

$ cat site_list 
test.com 
example.com.br 
testing.net 

$ awk -F'.' 'FNR==NR{a[$NF];next}$NF in a' domain_ext_file site_list 
test.com 
testing.net 

説明:ドット(.)として

  • セットフィールドセパレータ、domain_ext_fileから店舗最後のフィールド($NF)、配列aで、次の行に移動
  • アレイaを有する場合、第二のファイル(site_list)を読みながらキー/インデックスは2番目のファイルの最後のフィールド($NF in a)です。このような行/レコード/行を印刷します。
0

私はあなたが使用している正確な入力を貼り付けていないのを見ますが、これは本当に簡単ですので、これはうまくいくはずです。

ubuntu$ cat text.txt 
.com 
.net 
.org 
.biz 
.us 
.com.br 
.mlp 
.grrr 

ubuntu$ grep -E '[.]com$|[.]net$|[.]org$|[.]biz$|[.]us$' text.txt 
.com 
.net 
.org 
.biz 
.us 

よろしくお願いいたします。

0

使用grep:拡張正規表現と

grep '\.\(com\|net\|org\|biz\|us\)$' 

もっと読み、ご使用のバージョンでサポートされている場合:

grep -E '\.(com|net|org|biz|us)$' 
関連する問題