1

私は、bash シェルで Solaris のそのプロセッサ セットに該当するプロセッサ ID が続くプロセッサ セット番号を抽出するスクリプトに取り組んでいます。

抽出したい出力は次のとおりです: ($output の内容)

user processor set 1: processors 0 1
user processor set 2: processors 2 8 9
user processor set 3: processors 3 4 5 6 7

望ましい出力は次のとおりです。

1: 0 1
2: 2 8 9
3: 3 4 5 6 7

私がnawkを使って書いたコード:

print $output | nawk '                                 
BEGIN { ORS="\n" ; OFS = " " }
{
print$4; print OFS
for (i=6;i<=NF;i++)
print $i
}'

得られた出力:

1: 
0 
1
2: 
2 
8 
9
3:  
3 
4 
5 
6 
7

誰でも助けて、望ましい出力を得るために何が欠けているか教えてもらえますか? 前もって感謝します。

編集: OFS と ORS を使用するアイデアは、このチュートリアルから得られます:チュートリアル リンク

4

2 に答える 2

1

ORSは、デフォルトですでに に設定さ"\n"れています。複数の print ステートメントを使用したいので、print ORS任意の print ステートメントの後に暗黙的であるため、空の文字列に設定する必要があります。

print $output | awk '
    BEGIN { ORS=""; }
    {
        print $4;
        for (i=6;i<=NF;i++)
            print " " $i;
        print "\n";
    }'

カットでこれを行うこともできます:

print $output | cut -d ' ' -f 4,6-
于 2011-05-06T21:50:35.700 に答える
1

これを試して

print $output | nawk '                                 
BEGIN { ORS="\n" ; OFS = " " }
{
outrec = ""
for (i=6;i<=NF;i++)
    outrec = outrec " " $i
    print $4 " " outrec
}'
于 2011-05-06T21:55:48.580 に答える