2

ホスト名と日付のヘッダーを除いて、sar 出力を印刷しようとしています。次のコマンドは、ヘッダー行と出力フィールド区切りも除外できません。

sar -u|head -5|awk -F '
  BEGIN { hname="'"`hostname -s`"'"; hdt="'"`date +"%d-%b-%Y" `"'" ; OFS="," ;}
  { $1 ~ /[0-9]/ && $4 ~ /[0-9]/ }
  { printf( "h=%-15s d=%11s 1=%8s 2=%2s 3=%-3s 4=%6.2f 5=%6.2f 6=%6.2f 7=%6.2f 8=%6.2f 9=%6.2f\n", hname, hdt, $1, $2, $3, $4, $5, $6, $7, $8, $9 );}'

しかし、同じ検索式を使用するとうまくいきます!

4

2 に答える 2

0

これがあなたがする必要があることです:

$ hname=$(hostname -s)
$ hdt=$(date +"%d-%b-%Y")
$ $ sar -u | awk '$1~/[0-9]/&&$4~/[0-9]/&&NR<=5{print host,dat,$1,$2,$3,$4,$5,$6,$7,$8,$9}' OFS="," host="$hname" dat="$hdt"

いくつかのポインタ:

  • 必要はありません。変数headを使用して行数を制御できますNR
  • bash コマンドを使用するawkには、使用する必要があります。system()または、bash コマンドを変数に格納して、awk上記で行ったように呼び出すこともできます。
  • 出力区切り変数 は、ステートメントには影響OFSORSませんprintf
于 2013-06-24T13:29:58.370 に答える