awk -F" " 1より大きいスペースで区切ります

awk -F

私は次のような結果を生成する結果を解析しようとしていますnmcli dev wifi

*  SSID                 MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
   Prk                  Infra  11    54 Mbit/s  99      ▂▄▆█            
   VIDEOTRON2255        Infra  11    54 Mbit/s  67      ▂▄▆_  WPA1 WPA2 
   a space              Infra  6     54 Mbit/s  65      ▂▄▆_  WPA2      
*  TNCAP4D0B18          Infra  11    54 Mbit/s  52      ▂▄__            

awk -F" "最初は、ほとんどすべての状況を解析するために使用しました。 Wi-Fiネットワークが接続されているすべてのデバイスa spaceはまったく機能しないことがわかりました。

だから、1つではなく2つのスペースを試してみましたが、期待した結果は出ませんでした。上記の出力の列を一貫して解析するにはどうすればよいですか?

現在のスクリプトは次のとおりです。

nmcli dev wifi | sed 's/\*//g' > /tmp/scan
networks=$(cat /tmp/scan | awk -F"  " '{print $1}' | sed '1d')
# ...
bars=$(cat /tmp/scan | awk -F"  " '{print $6}' | sed '1d')

ベストアンサー1

awk -F' {2,}' # means - two or more spaces.

または

awk -F'  +' # means - one space, then one or more spaces.

このコマンドは同じ意味を持ちます。フィールド区切り文字として2つ以上のスペースを使用します。

おすすめ記事