何らかの理由で、このスクリプトから「-bash」が出力されていることを理解しようとしています。
cat sample | awk -v al=$0 -F"|" '{n = split(al, a, "|")} {print a[1]}'
「サンプル」ファイルには、a|b|c|d|e|f|d のような psv の「パイプ区切り値」が含まれています。
私の意図は、配列を使用することです。
上記のスクリプトの結果は、長さ 1 の配列であり、含まれる唯一の項目はシェルの名前である「-bash」です。
デフォルトでは $0 は現在使用されているプログラムを指していますが、私の知る限り、 awk スクリプト内では、 $0 パラメータは読み取られている行全体を指す必要があります。
問題の正確な場所が「bash/awk は初めて」ということを理解したいので、次の手順のどれが失敗しているか教えていただけますか?
1-サンプル ファイルを「連結」し、awk スクリプトの入力として渡します
2-「サンプル」に含まれる各行を値として「al」という名前の変数を定義します
3-パイプ「|」を定義します フィールドセパレーターとして
4-アクションを定義し、スプリッターとしてパイプを使用して「al」の値を「a」という名前の配列に分割します
5-別のアクションを定義します。この場合、配列の最初のアイテムを単に出力します
何かアドバイス?ありがとう!