1

次のコードがあり、それらを区切って並べて表示HOSTしたいと思います。RESULT:

HOST=`grep pers results.txt | cut -d':' -f2 | awk '{print $1}'`
RESULT=`grep cleanup results.txt | cut -d':' -f2 | awk '{print $1}' | sed -e 's/K/000/' -'s/M/000000/'`
echo ${HOST}${RESULT}

これらを表示するための最後のコマンドを誰か助けてください。すべてのホストとすべての結果を取得しています。

4

2 に答える 2

0

一度に 2 つのソースから読み取る追加のファイル ハンドルを使用して、配列なしで動作するバージョン。

while read host; read result <&3; do
    echo "$host:$result"
done < <( grep peers results.txt | cut -d: -f2 | awk '{print $1}' ) \
     3< <( grep cleanup results.txt | cut -d':' -f2 | awk '{print $1}' | sed -e 's/K/000/' -'s/M/000000/')

プロセスの置換が必要なため、まだ POSIX ではありません。代わりに、明示的なファイフを使用できます。(また、ホストと結果を生成するパイプラインを短縮する試み。これを 1 つのawkコマンドに結合することはおそらく可能です。ですから、読者への演習として残します。)awksedawk

mkfifo hostsrc
mkfifo resultsrc
awk -F: '/peers/ {split($2, a, ' '); print a[1]}' results.txt > hostsrc &
awk -F: '/cleanup/ {split($2, a, ' '); print a[1]}' results.txt | sed -e 's/K/000' -e 's/M/000000/' > resultsrc &

while read host; read result <&3; do
    echo "$host:$result"
done < hostsrc 3< resultsrc
于 2013-11-15T14:14:45.260 に答える