出力前に 1 回だけ印刷する必要がある数値が 2 回印刷されるという問題があります。最も関連性の高いコンテンツを強調しますが、コンテキストを示すために、スクリプト全体を提供します。
#!/bin/bash
ps aux
a の出力を配列にロードします。
N=0
for i in $(ps aux | awk '{print $11,$4}' | grep -v 0.0 | grep -v MEM | sort) ; do
array[$N]="$i"
let "N= $N + 1"
done
ここで、配列を 2 つの配列に分割します
N=0
for i in `seq 0 ${#array[@]}`; do
if [ $(( $i % 2 )) -eq 0 ]; then arrayb[$N]=${array[$i]} ; else arrayc[$N]=${array[$i]} ;fi
let "N= $N + 1"
done
ここで、重複したエントリを結合しようとします (複雑な変数名の一部をご容赦ください。トラブルシューティングを試みて暗闇の中で写真を撮っていました)。
N=0
c=0
for i in `seq 0 ${#arrayb[@]}`; do
let "B= $N - 1"
A=`echo ${arrayb[$B]} | tr -d '\n'`
B=`echo ${arrayb[$N]} | tr -d '\n'`
#A=${arrayb[$B]}
#B=${arrayb[$N]}
ここで、前者の配列要素が後者と等しいかどうかを確認します。その場合は、結合して削除します。
#if [ "$A" = "$B" ]; then
#arrayc[$N]=$(bc <<< ${arrayc[$N]}+${arrayc[$B]}); unset arrayb[$B];unset arrayc[$B]; echo trololo
#echo derp
#fi
重要な部分はこれです。echo $c
それから私echo $A $B
。ただし、私の出力は次のとおりです。
0
awk
1
awk
2
-bash
3
-bash
4
-bash
次のような場合:
0
awk
awk
2
-bash
-bash
3
echo $c
echo -n "$A" "$B"
echo ""
let "c=$c+1"
let "N= $N + 1"
done
私が頭を包むことができないのは、それがすべて同じループであるとき、次にどのように印刷されるかですa
。どんな援助でも大歓迎です。c
b
c