提取具有多个基行的每列的第一行

提取具有多个基行的每列的第一行

例如:

docker0: flags=4099<UP,BROADCAST,MULTICAST
        inetasdfsd fdsfdsf sdfdsf 
        asfdsa dafdsg sfgfsg sgsgd
dockerApps: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  
           inet dsfsdf sdfds sdfdsf 
           inetdfdsf sdgdsg gdsgdsg sdgds 

ens192: flags=4163<UP,BROADCAST
       inet sfsf sf sf sf sf sf s
       inedfs sf s sffs fsf sf s

我想要的是:

docker0: flags=4099<UP,BROADCAST,MULTICAST
dockerApps: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 
ens192: flags=4163<UP,BROADCAST

等等,不仅对应上面三个,根据ifconfig的输出,需要捕获接口状态,都有

*帮助打印1美元即可获得

docker0:
dockerApps:
ens192:

答案1

如果你想打印所有不以空格开头的行,你可以使用

grep '^[^ ]'

如果是空格或制表符,您可以使用 POSIX 类:

grep '^[^[:space:]]'

第一个^意思是一行的开头,外部[]引入了一个字符类。^字符类内部否定它,所以它匹配除列出的字符外的所有字符[:space:]匹配任何空白。

答案2

ifconfig | awk '/docker|ens192/{print $0}' 

请使用上面的命令,因为我测试了它,它工作得很好。

相关内容