我正在输出一些像
这样的命令ymmetrix ID : 000190105233
Host Name : 1CHT-AMS-002-D
Identifiers Found : 200a03000000002c
200a03000000003c
Device Cap(MB) Attr Dir:P
------ ------- ---- ----
05AC 3 9A:0
05AD 3 9A:0
05B2 3 8A:0
05B3 3 8A:0
0A0B 69713 (M) 8A:0, 9A:0
0A0F 69713 (M) 8A:0, 9A:0
0A13 69713 (M) 8A:0, 9A:0
0A17 69713 (M) 8A:0, 9A:0
0A1B 69713 (M) 8A:0, 9A:0
-----------------------------
MB Total: 348577
GB Total: 340.4
我需要帮助才能获得输出
Device | Dir:P | Identifiers Found
------ | ---- | -----------------
05AC | 9A:0 | 200a03000000002c
05AD | 9A:0 | 200a03000000003c
05B2 | 8A:0 |
05B3 | 8A:0 |
0A0B | 8A:0, 9A:0 |
0A0F | 8A:0, 9A:0 |
0A13 | 8A:0, 9A:0 |
0A17 | 8A:0, 9A:0 |
0A1B | 8A:0, 9A:0 |
其中“标识符”可以超过两个,
我正在使用此
for i in 'cat text |grep -i Identifiers';
do
cat text |awk '{print $1,$4,$5,$i}';
done
但未在第三栏获得“标识符”。
我们将不胜感激。
答案 0 :(得分:0)
使用awk
awk '
BEGIN {
p="%-10s|%-15s|%s\n"
printf p,"Device","Dir:P","Identifiers Found"
printf p,"------","-----","-----------------"}
/Identifiers/ {g=1}
/Device/{g=0}
/----------------/{f=0}
g {a[++i]=substr($0,21,16)}
f {printf p,$1,$4 " " $5,a[++j]}
/------ -------/ {f=1}
' file
Device |Dir:P |Identifiers Found
------ |----- |-----------------
05AC | |200a03000000002c
05AD | |200a03000000003c
05B2 | |
05B3 | |
0A0B |8A:0, 9A:0 |
0A0F |8A:0, 9A:0 |
0A13 |8A:0, 9A:0 |
0A17 |8A:0, 9A:0 |
0A1B |8A:0, 9A:0 |
| |
答案 1 :(得分:0)
您可以尝试:
awk -f f.awk input.txt
其中input.txt
是您输入的数据文件,f.awk
是:
/Identifiers Found/{
id[++j]=$4
while($1 != "") {
getline
id[++j]=$1
}
}
/^Device/ {
getline
getline
while ($1 != "") {
i++
if (NF==3) {
dev[i]=$1
dir[i]=$3
}
else {
dev[i]=$1
dir[i]=$4" "$5
}
getline
}
}
END {
if (i>j) n=i
else n=j
fmt="%-7s | %-12s| %-17s\n"
printf fmt, "Device", "Dir:P", "Identifiers Found"
printf fmt, "-----", "-----", "-----------------"
for (i=1; i<=n; i++)
printf fmt, dev[i],dir[i],id[i]
}