Differences between revisions 110 and 111
Revision 110 as of 2017-08-21 04:17:07
Size: 17217
Editor: localhost
Comment:
Revision 111 as of 2017-08-21 04:19:34
Size: 17664
Editor: localhost
Comment:
Deletions are marked like this. Additions are marked like this.
Line 281: Line 281:
  * 酒仙桥服务器
{{{
cd /mnt/play/systec/Projects/Vivo_2.4X/Second_第二批/csv
  $ cat JXQ酒仙桥_服务器.csv | awk -F"," '{ print $19,$20,$21,$22,$523,$26,$27 }' | awk -F"_|-" '{ print "酒仙桥:",$1"-光1口"",""酒仙桥:",$1"-光2口"",""酒仙桥:",$1"-iLO网口"",""酒仙桥:",$1"-网3口"",""酒仙桥:",$1"-网4 口"",""酒仙桥:",$1"-电源左"",""酒仙桥:",$1"-电源右" }' | uniq > JXQ酒仙桥_APP_label.csv
}}}

太和桥统计

机器数量统计

  cd /mnt/play/systec/Projects/Vivo_2.4X/IDC机房文档
awk -F"," '{ print $8 }' *.csv  | sort | sed '/^$/d;/^设备/d' | wc -l

6130

机柜数量统计

$ ls -tp *.csv
3-401.csv  3-403.csv  3-402.csv  1-501-app.csv  1-501.csv  1-502.csv
$ awk -F"," '{ print $9 }' *.csv |awk -F"-" '{ print $1 }' | sed -e '/^$/d;/^设备/d' | uniq | wc -l
459

机柜数量共 459 个

光纤线+RJ45网线数量

echo `cat 1-501.csv | awk -F"," '{ print $10 }' | sed '/^$/d;/^光/d' | wc -l`*2+`cat 1-501-app.csv | awk -F"," '{ print $10 }' | sed '/^$/d;/^光/d' | wc -l`*2+`cat 1-502.csv | awk -F"," '{ print $10 }' | sed '/^$/d;/^光/d' | wc -l`*2+`cat 3-401.csv | awk -F"," '{ print $10 }' | sed '/^$/d;/^光/d' | wc -l`*2+`cat 3-402.csv | awk -F"," '{ print $10 }' | sed '/^$/d;/^光/d' | wc -l`*2+`cat 3-403.csv | awk -F"," '{ print $10 }' | sed '/^$/d;/^光/d' | wc -l`*2|bc

12260

$ echo "(275*2+382*2+272*2+466*2+2145*2+2590*2)/2" | bc
6130

定位网络交换机机柜的位置

$ awk -F"," '{ print $6 }' < 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"-|_" '{ print $4,$5 }' | sort  | uniq -c  > 3-402-Vivo第一批服务器机柜-网络交换机机柜.txt

第一批1375台

计算线缆长度/数量

光纤线

 awk -F"-|_" '{if ($1==$5) {print $0,"光纤4M"} else { print $0 }}' < test2.csv

$ cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $4 }' | awk -F"-|_" '{if ($1==$5) {print $0,"光纤线4M"} else { print $0,"光纤线6M" }}'

# cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $4 }' | awk -F"-|_" '{if ($1==$5) {print $0,"光纤线4M"} else { print $0,"光纤线6M" }}' | awk -F"_| " '{ print $1,$6 }' | sort | uniq -c| awk '{ print $2,$3,$1 }' > 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt

# cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $5 }' | awk -F"-|_" '{if ($1==$5) {print $0,"光纤线4M"} else { print $0,"光纤线6M" }}' | awk -F"_| " '{ print $1,$6 }' | sort | uniq -c| awk '{ print $2,$3,$1 }' > 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt
H09 光纤线6M 16 光纤线6M 16
H10 光纤线4M 16 光纤线6M 16
H11 光纤线6M 16 光纤线4M 16
H23 光纤线6M 16 光纤线4M 16

RJ45网线

$ cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"以太网线3M"} else { print $1,"以太网线7M" }}' | uniq -c | awk '{ print $2,$3,$1 }'

H09 以太网线3M 16
H10 以太网线7M 16
H11 以太网线7M 16
H23 以太网线7M 16

汇总每一批次1375台线缆数量

   1 光纤线6M  320 + 1592 = 1912
   2 光纤线4M  160 + 678 = 838
   3 
   4 RJ45网线7M 782+160 = 942
   5 RJ45网线3M 80+353 = 433

1号楼502

  • cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $4 }' | awk -F"-|_" '{if ($1==$5) {print $0,"光1口-4M"} else { print $0,"光1口-6M" }}' | awk -F"_| " '{ print $1,$6 }' | uniq -c | awk '{ print $2,$3,$1 }' | tee 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt
  • cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $5 }' | awk -F"-|_" '{if ($1==$5) {print $0,"光2口-4M"} else { print $0,"光2口-6M" }}' | awk -F"_| " '{ print $1,$6 }' | uniq -c | awk '{ print $2,$3,$1 }' | tee 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt
  • join 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt | tee 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fibers.txt
  • cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"idrac网线_3M"} else { print $1,"idrac网线_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | join - 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fibers.txt | awk '{ print $1" ",$2" -"$3"根 ",$4" -"$5"根 ",$6" -"$7"根" }'

以下表格打印给弱电工程师以方便布线时查阅

   1 H09   idrac网线_3M-16   光1口_6M-16   光2口_6M -16
   2 H10   idrac网线_7M-16   光1口_4M-16   光2口_6M -16
   3 H11   idrac网线_7M-16   光1口_6M-16   光2口_4M -16
   4 H12   idrac网线_3M-16   光1口_6M-16   光2口_6M -16

该机房线缆总数

  • 320 根6M光纤线
  • 160 根4M光纤线
  • 80 根3M以太网线
  • 160 根7M以太网线

echo `grep 6M 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt | awk '{a+=$3}END { print a }'`+`grep 6M 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt | awk '{a+=$3}END { print a }'` | bc -l
echo `grep 4M 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt | awk '{a+=$3}END { print a }'`+`grep 4M 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt | awk '{a+=$3}END { print a }'` | bc -l

cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"以太网线3M"} else { print $1,"以太网线7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | grep 3M | awk '{a+=$3}END { print a"根3M以太网线" }'
cat 1-502-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"以太网线3M"} else { print $1,"以太网线7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | grep 7M | awk '{a+=$3}END { print a"根7M以太网线" }'

3号楼402

  • cat 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $4 }' | awk -F"-|_" '{if ($1==$5) {print $0,"光1口_4M"} else { print $0,"光1口_6M" }}' | awk -F"_| " '{ print $1,$6 }' | uniq -c | awk '{ print $2,$3,$1 }' | tee 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt
  • cat 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $5 }' | awk -F"-|_" '{if ($1==$5) {print $0,"光2口_4M"} else { print $0,"光2口_6M" }}' | awk -F"_| " '{ print $1,$6 }' | uniq -c | awk '{ print $2,$3,$1 }' | tee 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt
  • join 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt | tee 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fibers.txt
  • cat 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"idrac网线-3M"} else { print $1,"idrac网线-7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | join - 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fibers.txt | awk '{ print $1" ",$2"--"$3"根 ",$4"--"$5"根 ",$6"--"$7"根" }' | xclip
  • cat 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"idrac网线_3M"} else { print $1,"idrac网线_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | join - 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fibers.txt | awk '{ print $1" ",$2"-"$3"根 ",$4"-"$5"根 ",$6"-"$7"根" }' | sed '0~8 s/$/\n/'

以下表格打印给弱电工程师以方便布线时查阅

sed '0~10 s/$/ \n/g'

   1 B01  idrac网线_3M-12  光1口_6M-12  光2口_6M-12
   2 B02  idrac网线_7M-12  光1口_4M-12  光2口_6M-12
   3 B03  idrac网线_7M-12  光1口_6M-12  光2口_4M-12
   4 B04  idrac网线_7M-12  光1口_6M-12  光2口_6M-12
   5 B05  idrac网线_3M-13  光1口_6M-13  光2口_6M-13
   6 B06  idrac网线_7M-13  光1口_4M-13  光2口_6M-13
   7 
   8 F01  idrac网线_3M-16  光1口_6M-16  光2口_6M-16
   9 F02  idrac网线_7M-1  光1口_4M-1  光2口_6M-1
  10 A01  idrac网线_3M-16  光1口_6M-16  光2口_6M-16
  11 A02  idrac网线_7M-13  光1口_4M-13  光2口_6M-13

该机房线缆总数

$ join 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber*.txt | tee 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fibers.txt

echo `grep 4M 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt | awk '{a+=$3}END { print a }'`+`grep 4M 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt | awk '{a+=$3}END { print a }'` | bc -l
echo `grep 6M 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber1.txt | awk '{a+=$3}END { print a }'`+`grep 6M 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.Fiber2.txt | awk '{a+=$3}END { print a }'` | bc -l

cat 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"以太网线3M"} else { print $1,"以太网线7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | grep 7M | awk '{a+=$3}END { print a"根7M以太网线" }'
cat 3-402-Vivo第一批服务器所在机柜位置和标签_v1.0.csv | awk -F"," '{ print $6 }' | awk -F"-|_" '{ if ($1==$5) { print $1,"以太网线3M"} else { print $1,"以太网线7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | grep 3M | awk '{a+=$3}END { print a"根3M以太网线" }'

678 根4M光纤线
1592根6M光纤线

782 根7M以太网线
353 根3M以太网线

定位HPSO所在的物流发货清单

查找包含502机房HPSO

for x in $(grep 502 *.csv | awk -F"," '{ print $2 }' ) ; do grep $x VIVO*.csv;done

生成机柜位置+SN+iLO信息文档

step 1

convert xlsx to csv

  egrep "7700554959|7700554723|7700554494" VIVO_-GOODS-物流总表-第一批.csv  | awk -F"," '{ print $1,$3 }'

find . -type f -name "VIVO*.xlsx" | while read f; do xlsx2csv $f $f.csv;done

$ for x in $(awk '{ print $1 }' < vivo-daily-list ) ; do grep $x VIVO*-GOODS*.csv;done |  awk -F"," '{ print $1,$3 }' | tee `date +%F`
H3CT64938961 7700554154
H3CT64938962 7700554155
H3CT64938966 7700554493
  • Option(Just for verify)

$ for i in $(awk '{ print $2 }' vivo-daily-list); do echo VIVO_*$i*.xlsx.csv; done
VIVO_7700554154(50套).xlsx.csv
VIVO_7700554155(50套).xlsx.csv
VIVO_7700554493(50套).xlsx.csv

step 2 根据物流配送表生成对应的lists

for i in $(awk '{ print $2 }' vivo-daily-list); do awk -F"," '{ print $1,$5 }' VIVO*$i*.csv | tee iLO-402_SN-"$i"_`date +%F`.txt; done

awk -F"," '{ print $1,$5 }' < VIVO_7700555611(35套).xlsx.csv > ../Ext外包文档/iLO-502_SN-lists_date +%F.txt awk -F"," '{ print $1,$5 }' < VIVO_7700555610(50套).xlsx.csv >> ../Ext外包文档/iLO-502_SN-lists_date +%F.txt

step 3 join SN+iLO+Latitude & convert txt to csv

for i in $(awk '{ print $2 }' vivo-daily-list); do awk 'NR==FNR {a[$2] = $1; next} {print $1,$2,$3,a[$2]}' iLO-402_SN-"$i"_`date +%F`.txt iLO-402-Latitudes.txt | sort -r -k3  | head -50 | sed 's/ \+/,/g' | tee iLO-402_SN-"$i"_`date +%F`.csv; done

sed -i -e '1iPosition,iLO,SN\'  iLO-402_SN-*.csv
for i in $( ls -tp *.csv | awk -F"-|_" '{ print $4 }'); do grep "$i" ../../VIVO_-GOODS-物流总表-第一批.csv | awk -F"," '{ print $1","$3","$4 }'; done

awk 'NR==FNR {a[$2] = $1; next} {print $1,$2,$3,a[$2]}' iLO-402_SN-H3CT64938962.txt iLO-402-Latitudes.txt | sort -r -k3 | head -50 | sed 's/ \+/,/g' | tee iLO-402_SN-Latitude_H3CT64938962.csv

awk 'NR==FNR {a[$2] = $1; next} {print $1,$2,$3,a[$2]}' iLO-502_SN-lists_date +%F.txt iLO-502-Latitudes.txt | sort -k3 | tee iLO-502-SN-Latitude.txt awk 'NR==FNR {a[$2] = $1; next} {print $1,$2,$3,a[$2]}' iLO-402_SN-H3CT64938961.txt iLO-402-Latitudes.txt | sort -r -k3 | head -50 | tee iLO-402_SN-Latitude_H3CT64938961.txt

合并总表

awk 'NR==FNR {a[$2] = $1; next} {print $1,$2,a[$2],$3,$4,$5,$6,$7,$8,$9,$10,$11}' iLO-502-Latitudes.txt 1-502_EMCN-FE2-Vivo_ALL-WI-V1.csv | sed 's/\x0D//g' | tee 1-502_EMCN-FE2-Vivo_ALL-WI-V1.csv.new

计算已完成上架的设备并包含序列号

 awk 'NR==FNR {a[$2] = $1; next} {print $0a[$2]}' Loaded_Servers.txt total.txt  | tee  1375第一批_total_with_SN.txt
 sed 's/\x0D//;s/ \+/,/g' < 1375第一批_total_with_SN.txt > 1375第一批_total_with_SN.csv

sort it with SN

  sort --field-separator="," -k22 1375第一批_total_with_SN.csv

第二批5603台

3号楼402

FC 数量

$ echo `grep 6M THQ太和桥_3-402-LYP.csv.Fiber1.txt | awk '{a+=$3}END { print a }'`+`grep 6M THQ太和桥_3-402-LYP.csv.Fiber2.txt | awk '{a+=$3}END { print a }'` | bc
1361
$ echo `grep 4M THQ太和桥_3-402-LYP.csv.Fiber1.txt | awk '{a+=$3}END { print a }'`+`grep 4M THQ太和桥_3-402-LYP.csv.Fiber2.txt | awk '{a+=$3}END { print a }'` | bc
659

以太网线数量

$ cat THQ太和桥_3-402-LYP.csv | awk -F"," '{ print $10"-"$15 }' | awk -F"-" '{ if($1==$3) { print $1,"iLO网线_3M" } else { print $1,"iLO网线_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d;/^iLO网线/d' |grep 7M | awk '{a+=$3}END { print a"根7M以太网线" }'
708根7M以太网线
$ cat THQ太和桥_3-402-LYP.csv | awk -F"," '{ print $10"-"$15 }' | awk -F"-" '{ if($1==$3) { print $1,"iLO网线_3M" } else { print $1,"iLO网线_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d;/^iLO网线/d' |grep 3M | awk '{a+=$3}END { print a"根3M以太网线" }'
302根3M以太网线

弱电布线参考表格

cd /mnt/play/systec/Projects/Vivo_2.4X/Second_第二批/csv

光1口

cat THQ太和桥_3-402-LYP.csv | awk -F"," '{ print $10"-"$11 }' | awk -F"-" '{ if($1==$3) { print $1,"光1口_4M" } else { print $1,"光1口_6M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d' | tee THQ太和桥_3-402-LYP.csv.Fiber1.txt

光2口

cat THQ太和桥_3-402-LYP.csv | awk -F"," '{ print $10"-"$12 }' | awk -F"-" '{ if($1==$3) { print $1,"光2口_4M" } else { print $1,"光2口_6M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d' | tee THQ太和桥_3-402-LYP.csv.Fiber2.txt

app-eth3_ForAPP

cat JXQ酒仙桥_APP.csv | awk -F"," '{ print $10"-"$16 }' | awk -F"-" '{ if($1==$3) { print $1,"网3口_3M" } else { print $1,"网3口_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d;/^网/d' | tee JXQ酒仙桥_APP.csv.eth3

app-eth4_ForAPP

cat JXQ酒仙桥_APP.csv | awk -F"," '{ print $10"-"$17 }' | awk -F"-" '{ if($1==$3) { print $1,"网4口_3M" } else { print $1,"网4口_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d;/^网/d' | tee JXQ酒仙桥_APP.csv.eth4

合并光1&光2口

join THQ太和桥_3-402-LYP.csv.Fiber1.txt THQ太和桥_3-402-LYP.csv.Fiber2.txt | tee THQ太和桥_3-402-LYP.csv.Fibers.txt

合并eth3&eth4口_ForAPP

   join JXQ酒仙桥_APP.csv.eth3 JXQ酒仙桥_APP.csv.eth4 | tee JXQ酒仙桥_APP.csv.Ethers

合并FC+Eths_ForAPP

  $ join THQ太和桥_1-501-APP.csv.Ethers THQ太和桥_1-501-APP.csv.Fibers | tee THQ太和桥_1-501-APP.csv.FC-ETHs

合并网口和光口

cat THQ太和桥_3-402-LYP.csv | awk -F"," '{ print $10"-"$15 }' | awk -F"-" '{ if($1==$3) { print $1,"iLO网线_3M" } else { print $1,"iLO网线_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d;/^iLO网线/d'  | join - THQ太和桥_3-402-LYP.csv.Fibers.txt | awk '{ print $1" ",$2"-"$3"根 ",$4"-"$5"根 ",$6"-"$7"根" }' | sed '0~3 s/$/\n/'

合并网口和光口v2-ForAPP

  $ cat JXQ酒仙桥_APP.csv | awk -F"," '{ print $10"-"$15 }' | awk -F"-" '{ if($1==$3) { print $1,"iLO网线_3M" } else { print $1,"iLO网线_7M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d;/^光/d;/^iLO网线/d'  | join - JXQ酒仙桥_APP.csv.FC+ETHs | awk '{ print $1" ",$2"-"$3"根 ",$4"-"$5"根 ",$6"-"$7"根",$8"-"$9"根 ",$10"-"$11"根" }' | sed '0~3 s/$/\n/' | tee JXQ酒仙桥_APP_For弱电.txt

标签打印

封装标签生成

  • 酒仙桥APP

cd /mnt/play/systec/Projects/Vivo_2.4X/Second_第二批/csv
  $ cat JXQ酒仙桥_APP.csv | awk -F"," '{ print $19,$20,$21,$22,$523,$26,$27 }' | awk -F"_|-" '{ print "酒仙桥:",$1"-光1口"",""酒仙桥:",$1"-光2口"",""酒仙桥:",$1"-iLO网口"",""酒仙桥:",$1"-网3口"",""酒仙桥:",$1"-网4 口"",""酒仙桥:",$1"-电源左"",""酒仙桥:",$1"-电源右" }' | uniq > JXQ酒仙桥_APP_label.csv
  • 酒仙桥服务器

cd /mnt/play/systec/Projects/Vivo_2.4X/Second_第二批/csv
  $ cat JXQ酒仙桥_服务器.csv | awk -F"," '{ print $19,$20,$21,$22,$523,$26,$27 }' | awk -F"_|-" '{ print "酒仙桥:",$1"-光1口"",""酒仙桥:",$1"-光2口"",""酒仙桥:",$1"-iLO网口"",""酒仙桥:",$1"-网3口"",""酒仙桥:",$1"-网4 口"",""酒仙桥:",$1"-电源左"",""酒仙桥:",$1"-电源右" }' | uniq > JXQ酒仙桥_APP_label.csv

$ cat Project2_酒仙桥-服务器.csv | awk -F"," '{ print $2"-"$3 }' | awk -F"-" '{ if($1==$3) { print $1,"光1口_4M" } else { print $1,"光1口_6M" }}' | uniq -c | awk '{ print $2,$3,$1 }' | sed '/^设备/d'

désert/workarea/vivo (last edited 2018-11-21 15:39:05 by localhost)