sed +は、「ドット文字列」の前に文字列を含まないすべての単語を削除します。

sed +は、「ドット文字列」の前に文字列を含まないすべての単語を削除します。

ファイルからlinux / LINUXを含まないホストを削除するために、次のsed構文を中和しました。

 sed -i '/linux\|LINUX/!d' file

はい

linux01.moon.com
solaris.moon.com
UNIX.foot.com

あげる

linux01.moon.com

ただし、ドメインにLinux名も含まれる他の場合があります。

linux01.room_linux.com
linux02.gt.com
linux03.klist.com
sol.linux.com

あげる

linux01.room_linux.com
linux02.gt.com
linux03.klist.com
sol.linux.com

変える

    linux01.room_linux.com
    linux02.gt.com
    linux03.klist.com

それでは、LinuxまたはLINUXが含まれている場合は、ドメイン名を無視するようにsed構文をどのように変更しますか?

ベストアンサー1

パターンを行の先頭に固定し、キーワードが見つかるまでドット^()[^.]*以外の文字のみを許可する必要があります。

sed -E '/^[^.]*(linux|LINUX)/!d'

代替パターンの周りに中かっこを追加する必要があります。より読みやすくするために、代わりに拡張正規表現を使用しました。

おすすめ記事