$ varの値が$ 0であるのはなぜですか?

$ varの値が$ 0であるのはなぜですか?

私はファイル内のすべての単語を反転する非常に単純なawkスクリプトを書いています。

awk '
{
for (i=1;i<=NF;i++)
{ x=""
for(j=length($i);j>0;j--)
x=x substr($0,j,1);
print x
}}' file1

file1の内容は次のとおりです。

hello

今私を混乱させるのは - を交換する時です。

print x

そして

print $x

つまり、記録された出力を取得します。わかりました。こんにちは反対出力ではないオレ

$xを使用すると、なぜ$ 0のコンテンツが提供されますか?変数はawkでどのように機能しますか?本当に混乱しています。 $xを使用する必要がある場合とxのみを使用する必要がある場合の規則がありますか?

ベストアンサー1

xあなたのawk変数は$x何か違うものです...

$0読み取った行の入力文字列の内容に対応し、$1...はデフォルトの区切り文字を使用する分析フィールドに対応します$n$0

awkを使用すると、変数を使用してプログラムでフィールドにアクセスできます。つまり、変数にMyValueが含まれている場合と同じです。5$MyValue$5

ここで何が起こるのかは、変数に数値として解釈される文字列がx含まれていることです。 awkでは、数値以外の値で始まるすべての文字列は、たとえば数値として使用されていると解釈されます。たとえば、と解釈されるためと評価されます。したがって、あなたの場合と同様に、提供された入力文字列です。olleh005*"test"0"test"0$x$0hello

おすすめ記事