1

私は現在割り当てを行っていますが、私を困惑させた質問は次のとおりです。

「awkコマンドを記述して、上記のテキストファイルの各行の前に対応する行番号を挿入します。この場合、空白行に番号を付けないでください。」

答えはありますが、各コンポーネントの機能の説明を見つけるのに苦労しています。

コマンドは次のとおりです。

awk '{print (NF? ++a " " :"") $0}' <textfile.txt>

NFそれがフィールド番号であり、$0入力レコード全体を参照していることを私は知っています。コマンドをいじって何が何をするのかを調べてみましたが、何かを省略すると常に構文エラーが発生するようです。

だから、私の質問は、各コンポーネントが何をするのかということです。何をし++aますか??NF?_ そして、引用符のビットは何をしますか?

前もって感謝します!

4

2 に答える 2

1

命令... ? ... : ...ですif-else。したがって、次と同じです。

if ( NF > 0 ) {
    ++a;
    print a " " $0;
} else {
    print $0;
}

aフィールドのある行が見つかった場合にのみインクリメントされる変数です。

于 2012-08-24T11:04:49.273 に答える
0
print (NF? ++a " " :"") $0

ソリューションで三項演算子が使用されています。空白行の場合、NF は常に 0 になります。

cond?true case:false case

if NF is >0 then print a or else print "" a++ は、印刷後に次の非空白行処理に使用される a を 1 ずつインクリメントすることを示します。

awk 'BEGIN{count=1}{if($0~/^$/){print}else{print count,$0;count++}}' your_file

以下でテスト:

> cat temp.cc
int main ()
{

}
> awk 'BEGIN{count=1}{if($0~/^$/){print}else{print count,$0;count++}}' temp.cc
1 int main ()
2 {

3 }
> 
于 2012-08-24T12:38:42.117 に答える