1

小さな問題があります。以下のコードは正常に動作していましたが、何も表示されなくなりました。これのエラーがどこにあるのかよくわかりません。

> #! /bin/bash

awk -F, '       FILENAME = $1 { FS = ":" }

        { print $1 " "  $2 " "  $3 " " $4 }





                '
  • 次のようないくつかのオプションを追加したいと思います: ./search thefile -C

reg ex -C をオプションのようにして、いくつかの特定のものを表示したい。

これについてのアイデアはありますか?

ありがとうございました

4

2 に答える 2

0

あなたは絶対にやりたくない:

FILENAME = $1

あなたはおそらく意味した

FILENAME == $1

さらに、サンプル入力や期待される出力などのコンテキストがないと、スクリプトは意味を成しません。

于 2012-10-18T00:05:19.580 に答える
0

はじめに . . .

ファイル test.dat が次のようになっている場合

100:200:300:400

次に、このシェル スクリプトはこれらの値をそれぞれ出力します。

#! /bin/bash
awk 'BEGIN { FS = ":" } NF==4 && $0 ~/:/{ print FILENAME, $1 " "  $2 " "  $3 " " $4 }' $1

次のように、単一引用符で囲まれた引数を使用して、シェル スクリプト「test.sh」を呼び出します。

./test.sh 'test*.dat'

このテストNF>=4では、印刷を試みる前に少なくとも 4 つのフィールドがあることを確認します。正規表現の一致$0~/:/により、行に少なくとも 1 つのコロンがあることが確認されます。(あなたがやろうとしていることを表現するもっと良い方法があるかもしれません。)

FILENAME変数は、行がどのファイルからのものかを示します。意図したとおりに機能していることを確認したら、削除できる場合があります。

于 2012-04-22T13:54:02.807 に答える