出力が"*"の場合、cutコマンドは動作が異なります。

出力が"*"の場合、cutコマンドは動作が異なります。

シェルスクリプトを作成しようとしていますが、以下はファイルのレコードからいくつかの値を抽出したい部分です。

tgt_val=`cat $file_name | grep "$string_name" | cut -d"|" -f$column_no`

このメソッドは、指定された列に特定の数値または文字列値がある場合は正常に機能しますが、列値が「*」の場合は失敗します。

たとえば、

102|Sam|*|USA

このコマンドは列1,2,4でうまく機能します。

ただし、列3の場合、現在のディレクトリにあるすべてのファイルの出力が提供されます。

誰かがこの問題を解決するのを手伝ってください。

答え1

何が起こっているのか、*シェルが何らかの方法で解釈しているということです。抽出されたすべてのフィールドが常に正しく引用されていることを確認してください。

関連情報