Linux

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

  • June 7, 2020

例如:

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:

如果要列印所有不以空格開頭的行,可以使用

grep '^[^ ]'

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

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

第一個^表示一行的開頭,外部[]引入了一個字元類。字元類的^內部否定它,因此它匹配除列出的字元之外的所有字元[:space:]匹配任何空格。

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

請在我測試時使用上面的命令,它工作正常。

引用自:https://unix.stackexchange.com/questions/591145