私はファイル内のすべての単語を反転する非常に単純な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では、数値以外の値で始まるすべての文字列は、たとえば数値として使用されていると解釈されます。たとえば、と解釈されるためと評価されます。したがって、あなたの場合と同様に、提供された入力文字列です。olleh
0
0
5*"test"
0
"test"
0
$x
$0
hello