ファイルから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'
代替パターンの周りに中かっこを追加する必要があります。より読みやすくするために、代わりに拡張正規表現を使用しました。
答え2
$ sed -e '
h
s/\..*//;y/linux/LINUX/;/LINUX/!d
g
' inp.file
これが取ることができるPosix sedアプローチです。