0

2 つの行の値があり、すべての値を取得して変数にしたいと考えています。

出力は emc ストレージからのものです。

Bus 0 Enclosure 0  Disk 0
State:                   Enabled

Bus 0 Enclosure 0  Disk 1
State:                   Enabled

期待される結果:

Bus:0|Enclosure:0|Disk:0|State:Enabled

または、最後の行を取得する方法を教えてくれる人が必要です...

4

4 に答える 4

3

これはうまくいくかもしれません(GNU sed):

sed '/^Bus/!d;N;s/[0-9]\+/:&|/g;s/\s//g' file

最後の行のみを取得するには:

sed '/^Bus/{N;h};$!d;x;s/[0-9]\+/:&|/g;s/\s//g' file
于 2013-08-29T08:05:00.647 に答える
2
perl -00anE 's/:// for @F; say join "|", map { $_%2 ? () : "$F[$_]:$F[$_+1]" } 0..$#F' file

出力

Bus:0|Enclosure:0|Disk:0|State:Enabled
Bus:0|Enclosure:0|Disk:1|State:Enabled
于 2013-08-29T07:48:32.963 に答える
1

あなたGNU awkができること:

$ awk 'NR>1{$6=$6$7;NF--;print RS,$0}' RS='Bus' OFS='|' file
Bus|0|Enclosure|0|Disk|0|State:Enabled
Bus|0|Enclosure|0|Disk|1|State:Enabled

そして最後の行のみ:

$ awk 'END{$6=$6$7;NF--;print RS,$0}' RS='Bus' OFS='|' file
Bus|0|Enclosure|0|Disk|1|State:Enabled
于 2013-08-29T08:10:15.400 に答える