ファイルの特定のパターンまたは文字列の後の残りの各行を削除するには?

ファイルの特定のパターンまたは文字列の後の残りの各行を削除するには?

テキストファイルにURLリストがあるとしましょう。

google.com/funny
unix.stackexchange.com/questions
isuckatunix.com/ireallydo

「.com」以降のすべてのエントリを削除したいです。

予想される結果:

google.com
unix.stackexchange.com
isuckatunix.com

頑張った

sed 's/.com*//' file.txt 

しかし、それも.com削除された。

ベストアンサー1

「.com」の後のすべてのエントリを明示的に削除するには、既存のsedソリューションを調整して「.com(anything)」を「.com」に置き換えます。

sed 's/\.com.*/.com/' file.txt

最初のピリオドから外れるように正規表現を調整しました。それ以外の場合は、「thisiscommon.com/something」と一致します。

「sub.com.domain.com/foo」などのアイテムを誤って切り捨てないように、「.com」パターンを後ろにスラッシュで固定します。

sed 's/\.com\/.*/.com/' file.txt

おすすめ記事