• ベストアンサー

awk の使い方

sample.txt ファイルには   "中村" "08/01/80" "03.1234.5678"   "木村" "08/01/81" "06.1252.2536" のような情報があります。(フィールドの区別はTabです) そこの3番フィールドが電話番号ですので、awkで検索しようと思っています。 それで、 $ shell 06.1252.2536 #!/bin/sh NUM=$1                    #引数をNUMに代入 awk -v ARGU="$NUM" ' { VAR=substr($3,2,(length($3)-2))      #「"」を取り除いた if ( ARGU == VAR ) {print}         #電話番号と比較 }' /sample.txt のようにして、検索をかけようとしましたが、できません。 どこが間違っているのか教えてください。 awkの他の方法があるとか、違うもの(sed or grep)でできるのであれば、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

こんな風に手を加えたら動きましたよ。 #!/bin/sh NUM=$1 #引数をNUMに代入 awk -v ARGU="$NUM" ' \ { \ VAR=substr($3,2,(length($3)-2)) #「"」を取り除いた \ if ( ARGU == VAR ) {print} #電話番号と比較 \ }' ./sample.txt $ ./shell 06.1252.2536 "木村" "08/01/81" "06.1252.2536" なぜこれで動いたのかについては、ご自分のソースと見比べて、シェルスクリプトの仕様についてもう少し勉強すればおわかりになると思います。 あと、質問欄のソースの中には不必要な全角スペースが入っていましたが、これも誤動作の元です。お気をつけください。

その他の回答 (1)

  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.1

sample.txtが見つからないのでは? 具体的には、 }' /sample.txt ではなく、 }' ./sample.txt ならどうでしょうか?

関連するQ&A

専門家に質問してみよう