我阉割了以下sed语法,以便从文件中删除任何不包含linux/LINUX的主机
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语法以忽略域名呢?
发布于 2019-08-13 12:00:41
您需要使用^将模式修复到行的开头,然后只允许除点([^.]*)以外的其他字符,直到找到关键字为止:
sed -E '/^[^.]*(linux|LINUX)/!d'请注意,您需要在您的替代模式周围添加大括号。我转而使用扩展的正则表达式,以使其更易读。
发布于 2019-08-14 03:43:25
$ sed -e '
h
s/\..*//;y/linux/LINUX/;/LINUX/!d
g
' inp.file这是您可以采用的Posix sed方法。
https://unix.stackexchange.com/questions/535352
复制相似问题