3

NRの変数に渡すことはできます awkか?

次のようなスクリプトがあります。

     awk -v { blah blah..   
     ..........
     count--
     print count
    }
     if (count==0)
    {print "The end of function"
     print NR 
     exit
     } 

これはコードの awk 部分です。NR をvar2 に次のように渡したい:

    sed -n ''"$var1"','"$var2"'p'

何度か再利用する必要があります。

返信ありがとうございます。

4

3 に答える 3

4

行の特定のサブセットのみを印刷したい場合は、ほぼそこにあります。-vフラグが最適です。

awk -v var1=15 -v var2=25 'NR>=var1 && NR<=var2 {blah blah ...}'

もちろん、15と25を必要なものに変更する必要があります。変数は引用符で囲まれてはならないことに注意してください。

于 2012-06-25T15:39:54.310 に答える
3

と変数awkで何を達成したいのかわかりません。ファイルの行数ですか?sedNR

このコマンドはそれを取得します:

wc -l infile | sed -e 's/ .*$//'

なので、-vswitch toawkをつけて、好きなように使ってください。私のコンピューターには10行ある10ため、次のコマンドは印刷されます。infile

awk -v num_lines=$(wc -l infile | sed -e 's/ .*$//') 'BEGIN { print num_lines }'
于 2012-06-25T14:41:39.183 に答える
3

他の人が示唆しているように、全体的な目標を達成するためのより良い方法があります。

ただし、特定の質問に答えるには:

var2=$(awk 'END {print NR}' inputfile)

AWK スクリプト内で必要なその他のものを追加します。

于 2012-06-25T20:36:13.087 に答える