毎日WiFiを確認する必要がある場所がいくつかあります。現在のスクリプトを実行すると、これが表示されます。
名前は、最初のMAC、最初のIPなどに対応します。このファイルをどのように使用または再配置できますgrep
か?awk
sed
Name : WiFi 1
Name : WiFi 2
Name : WiFi 3
Name : WiFi 4
Name : WiFi 5
Name : WiFi 6
Name : WiFi 7
MAC : aa:aa:aa:aa:aa:aa
MAC : bb:bb:bb:bb:bb:bb
MAC : cc:cc:cc:cc:cc:cc
MAC : dd:dd:dd:dd:dd:dd
MAC : ee:ee:ee:ee:ee:ee
MAC : ff:ff:ff:ff:ff:ff
MAC : gg:gg:gg:gg:gg:gg
IP : 10.0.1.0
IP : 10.0.1.1
IP : 10.0.1.2
IP : 10.0.1.3
IP : 10.0.1.4
IP : 10.0.1.5
IP : 10.0.1.6
Status : Operational
Status : Operational
Status : Operational
Status : Operational
Status : Operational
Status : Operational
Status : Operational
Interface : X2
Interface : X2
Interface : X2
Interface : X2
Interface : X2
Interface : X2
Interface : X2
私はそれらすべてを以下のように出力したいと思います。
Name : WiFi 1
MAC : aa:aa:aa:aa:aa:aa
IP : 10.0.1.0
Status : Operational
Interface : X2
答え1
季節ごとに味を見ることができる自己計算バージョン:
awk ' $1!=last {n=0;last=$1}
{++n;gaggle[n]=gaggle[n]"\n"$0}
END { for (k in gaggle) print gaggle[k] }
'
答え2
7つのAPの場合はGNUsed
とbash
/を使用してくださいksh
。
for (( i = 1; i <= 7; ++i )); do
sed -n "$i~7p" data
echo
done
から提供された情報data
に基づいて
Name : WiFi 1
MAC : aa:aa:aa:aa:aa:aa
IP : 10.0.1.0
Status : Operational
Interface : X2
Name : WiFi 2
MAC : bb:bb:bb:bb:bb:bb
IP : 10.0.1.1
Status : Operational
Interface : X2
Name : WiFi 3
MAC : cc:cc:cc:cc:cc:cc
IP : 10.0.1.2
Status : Operational
Interface : X2
(等)
APが何人かわからない場合は、行数を数えてくださいName
。
num="$( grep -c '^Name' data )"
for (( i = 1; i <= num; ++i )); do
sed -n "$i~${num}p" data
echo
done
GNUsed
固有の範囲構文first~step
は
step
lineで始まるすべての行と一致しますfirst
。
GNUのsed
マニュアルによると。
答え3
別の方法があります:
num=$(grep -c ^Name inputfile)
for((i=1; i <= num; i++)); do
for((j=1; j < num- 1; j++)); do
printf "%dp;" $((i + (j-1)*num));
done;
printf "\n";
done | while read cmd; do sed -n "$cmd" inputfile; done
答え4
これは別の方法ですawk
。
awk '{a[(NR-1)%7]=a[(NR-1)%7]$0RS}END{for(;i<7;){print a[i++]}}'
Name : WiFi 1
MAC : aa:aa:aa:aa:aa:aa
IP : 10.0.1.0
Status : Operational
Interface : X2
Name : WiFi 2
MAC : bb:bb:bb:bb:bb:bb
IP : 10.0.1.1
Status : Operational
Interface : X2
[etc]