私が制御できない型の行を分割しようとしています。パラメータ7と8が欠落している場合は空白に置き換えられる可能性があるため、最終的には次のようになります。
field1 field2 field3 field4 field5 field6 field9
現時点では、フィールド9はフィールド7として読み取られます。多くの検索では、次のことがうまくいくはずですが、そうではありません。これは私の部分の小さな文法エラーかもしれませんが、それを見つけることができないようです。
word1=`echo $LINE | awk 'BEGIN { FS="[ ]" } ; { print $9 }'`
ベストアンサー1
LINEパラメータは引用符で囲まれていないため、inwordsplitting
拡張が発生し、入力が受信されるまで7(シェルに示すように)になり、すべて空白で区切られます。 awkがこれを処理する前に行の空白が破損しないように、echoを出力として提供したいと思います(再びシェルで見ることができます)。これが参照パラメータによって防止されることです。$LINE
echo $LINE
awk
words
word
# How you want it to be given to awk:
$ printf '<%s> ' "$LINE"; echo
<field1 field2 field3 field4 field5 field6 field9>
# Your attempt:
$ printf '<%s> ' $LINE; echo
<field1> <field2> <field3> <field4> <field5> <field6> <field9>
フィールド6と9の間の余分なスペースがどのように消えるかを確認してください。
常に拡張子を引用する必要があります。拡張子を引用しないと、引用よりも問題が発生する可能性が高くなります。