• ベストアンサー

awkないでスクリプトを終了させるには?

cshで書いています。 awk内でスクリプトを終了させることはできませんか? exitと書くとawk終了となるのでその後のスクリプト内容がはしってしまいます。 どうしたらいいのでしょうか。 どなたかおしえてください。 awk '{ xxx exit }' こんなかんじです。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4855/10270)
回答No.2

cshというのを見落としてました。 awk '{if($2=="XX") exit 1}' file if( $status == 0 ) then  exit 1しなかったときの処理 endif で、exit 1 で後続の処理をスキップできます。

toritu
質問者

お礼

ありがとうございます!できました!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4855/10270)
回答No.1

awkでの処理結果によって、処理を打ち切ったり続行したりしたいのでしょうか? 前処理 if awk '{if($2=="X") exit 1}' file then  続行処理 fi awk中でexit 1を実行すると、awkの完了コードが1になるので、then部分がスキップされます。exit 1を実行しないと完了コードが0でthen部分が実行されます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • awkないでの変数について

    cshでスクリプトを書いています。 awk外で設定した変数をawk内で使用したいのですが、 できないのでしょうか。。。 使用できるならどのように使用できるのでしょうか。 どなたか教えて下さい。

  • AWKスクリプトについて

    AWKスクリプトで あるファイルの中の3単語目の最大文字数を表示させたくて以下のようなスクリプトを作成しました。 #!/bin/nawk -f BEGIN{ maxword = 0; } { if( length( $3 ) > $maxword ) maxword = length( $3 ); } END{ print $maxword; } 単純なスクリプトなのですが, テストしてみると空白の出力しかされません。 なにか間違っているのでしょうか? どなたかアドバイスをお願いします。

  • awk in csh

    cshスクリプトの中で、awkと連動させたプログラムを書こうとしています。 以下の様なテーブルファイル(hoge.txt)があると想定してください。 1 0.01 0.52 3.23 ..... 2 0.22 9.34 8.22 ..... 3 0.44 0.68 3.81 ..... ... (列も行も揃っている数値だけのテーブル) 例えば、変数hogeに第2行、第2列の数値(文字列)0.22を代入する際、 シェルスクリプト内部で、 @ hoge = `awk 'NR==2' {print $2} hoge.txt` としましたが、$2をスクリプトに与えられた2番目の引数だと解釈して、 うまく動作しません。 試しに$2 -> \$2に変換してみましたが、ダメでした。 (\の後に改行がないというエラーが出ました) 第i列目,j行目の文字列を取り出すにはどのようにすれば良いでしょうか。

  • シェルスクリプトで/bin/awkって何ですか?

    シェルスクリプトで/bin/awkって何ですか?

  • awkで一つマッチしたら終了させる

    echo $var | awk '{ for (i = 0; i < NF; i++) { if ($i == "AAA") { j = i+1; print $j ; exit; } } }' として変数1"$var"から"AAA"という文字列を抜き出しているのですが $varに二個以上のAAAが存在するときに 一つめのAAAとマッチしたら終了としたいのです どの用にしたらよいでしょうか? ご教授お願いします。

  • シェルスクリプトの中のawkユーザー定義関数

    cシェルの中でawkのユーザー定義関数を使う方法について教えてください。 以下の内容の入力ファイルがあったとして、 3 3 306 2 2 258 1 1 105 3列目を数値の大小に応じて、別の数値に置き換えて以下のファイル 3 3 10 2 2 9 1 1 8 を出力したいのです。 cシェルスクリプト中でawkのユーザー定義関数を使って作成したいのですが、シェルスクリプト中に関数をどこでどう定義してよいか分かりません。 cシェルスクリプトの中身は #/bin/csh -f gawk'{print $1,$2,symbolsize($3)}' input_data > output_data で、以下の関数を定義したいのです。 function symbolsize(ccc){ if (ccc >= 300) return 10 #300以上なら10を返す if (ccc >= 200 && ccc < 300) return 9 #200以上300未満なら9を返す else return 8 #それ以外なら8を返す } プログラミング初心者なので、なにとぞよろしくお願いします。

  • AWKスクリプトのエラーびついて

    AWKアスクリプトのエラーについて質問があります。 以下のようなAWKスクリプトでエラーがでます。 #!/bin/nawk -f BEGIN{ npl = 30; ppl = 200; pd = 110; nd = 46; m1 =0.074;   } { 処理 } エラーメッセージ /bin/nawk: syntax error 7 行目 コンテキスト m1 >>> =0.074; <<< なんで,こんなところでエラーが出力されるのかよくわかりません。 どなたか教えていただけないでしょうか?

  • AWKスクリプト作成法

    以下のような変換をするAWKスクリプトを教えて下さい。 r1 f23 f24 1.6 $.model=RR   ↓ r1 f23 f24 RR 1.6 ”$.model=”の後の文字列を取り出す方法がよく わかりません。    よろしくお願いします。

    • ベストアンサー
    • Perl
  • cshスクリプト内での”ヒアドキュメント”とパイプライン

    cshスクリプト内での”ヒアドキュメント”とパイプライン cshスクリプト内で、 1)比較的大量の入力を必要とするコマンドcommand1 2)command1の出力をawkにかけて整形する ことをしたいのです。ここで、条件として、一時ファイルを作らないという制約があります。 ここで、ヒアドキュメントというのでしょうか? command1 <<EOF very very long text very very long text very very long text very very long text EOF を用い、command1の入力とします。 そして、command1の標準出力をawkにかけたいのです。 そこで #!/bin/csh ( command1<<EOF very very long text very very long text very very long text very very long text EOF)| awk '............' とかやってみましたが、うまくいきません。 command1 <<EOF | awk '....' very very long text very very long text very very long text EOF もだめです。 別に、<<EOFにこだわるつもりはないのですが、cshスクリプト内で、かつ一時ファイルの作成をせずに、 このようなことをやる方法はあるでしょうか? 入出ストリームの切り替えとかでできそうな木もするのですが、できればそれはなしでお願いします。 なんでcshわざわざこんなことをやるんだ、一時ファイル作ればいいじゃん、という意見ごもっともですが、cshの理解のため、あえてやってみたいのです。 よろしくお願いいたします。

  • functionから抜けることができません、強制終了したいです。

    function A(xxx) { B(xxx); C(xxx); } function B(xxx) { if (xxx == "yyy") {ここでBから抜けてさらにAも抜けたい。} return(xxx); } こんな時どうすればいいのでしょうか? javascriptですとexitはありませんしquitもありません。 breakも違うようです…スクリプトの強制終了はどうすれば良いのでしょうか。