次のコードを見てください。私の意図は、変数p
をアルファベット順にのみ設定することでした。pが数値行で修正されているのはなぜですか?
awk '/^[A-Z]/{p="$0"; print "set p: " $p}
{print "p: " $p}' <<EOF
A
1
2
3
B
4
5
6
EOF
プログラムは、私のシステム上で次の出力を生成します。
set p: A
p: A
p: 1
p: 2
p: 3
set p: B
p: B
p: 4
p: 5
p: 6
p
ものののみ、アルファベットのラインすべてのラインで、値の変化に設定されています。どうして?
、単純な入力ミスと閉じるように投票。 – tripleee
シェルとawkの構文が混ざり合っています。 awkはシェルではない、それはそれ自身の言語を持つ完全に別のツールです。 Arnold Robbins著、Effective Awk Programming、第4版を読んでください。 –