• ベストアンサー

シェルスクリプトに関しての質問です

シェルスクリプトに関しての質問です result1からresult365まで365個のファイルがあります。 このファイルには UA 数値 (数値は任意の数)という行が存在する場合と存在しない場合があります。 ファイルの中から US 数値 の 数値の値を知る(UA 数値の行がなければ0とする)のが目的です。 しかし単にgrep UA result$i というコマンドをforを使って繰り返しただけでは、0の値がでてきません。 testコマンドと組み合わせてみましたが、UA 数値 という行が存在しない場合をうまく扱えずにだめでした。どうしたらいいでしょうか?

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

例えば、こんな if grep UA result$i then # 見付かったときの処理:例えば「なにもしない」 true else #見付からなかったときの処理:例えば「UA 0」と出力 echo 'UA 0' fi

noname#182748
質問者

お礼

かいとうありあがとうございます。助かりました。

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

その他の回答 (1)

回答No.2

質問の仕様は正しく記述しましょう。曖昧すぎます。 良く分からないUAの数値の合計値とUS数値の合計値を求めるスクリプトでです。 参考まで。 ls result* | awk '\ BEGIN { UA=0;US=0 } { if $1=="UA" { UA++ } if $2=="US" { US++ } } END { printf("UA=%d,US=%d",UA,US) }' 今手元にマニュアルがないのでawkの文法は調べてください。

noname#182748
質問者

お礼

回答ありがとうございます。具体例をしめせばよかったと思います。

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

関連するQ&A

  • シェルスクリプト コマンドを変数にした時の呼び方

    はじめまして、シェルスクリプトを勉強中の者です。 コマンドを変数にいれて、まとめました。 しかしコマンドの変数を呼びこもうとするとエラーになります。 ============================================ #!/bin/sh GREP="grep" cat "${GREP} '^[0-9]' /home/hoge/test.nicdf" ============================================ ================ シェル実行結果 ============= $ ./test.sh cat: grep '^[0-9]' /home/hoge/test.nicdf: そのようなファイルやディレクトリはありません どう書けば、エラーにならずに正常に動作するでしょうか? ご教授の程よろしくお願いします。

  • シェルスクリプトについて

    シェルスクリプトについて Linuxで先頭にスペースが入っている行をひとつ上の行につなげたいと考えています。 その場合、シェルスクリプトはどのように書けばよいかご教示願います。 【ファイル内容】 aaa △bbb ccc ddd (b行の先頭のみスペース(△)が入っています。) 【変換後のファイル】 aaa bbb ccc ddd

  • シェルスクリプトに関する質問です

    シェルスクリプトに関する質問です 以下のようなシェルスクリプトを書きたいのですが,難しくて出来無いのでどなたか ご協力お願いします。 foldaという名前のフォルダの中に1~100のフォルダがある. それら100個のフォルダの中に,それぞれfile.txtというテキストファイルがあり,これには 112.73 のように小数点ありの数字が1行書かれている. このfile.txtの内容を全て読み取って,それら100個分のデータを 1つのファイルに出力するスクリプト スクリプトファイルはfoldaの中にあるものとする. よろしくお願いします.

  • シェルスクリプト複数の配列を使用したループ処理

    bashシェルスクリプトの素人です。 IPアドレスを1行に1つずつ記したファイル IP.txt と、IDを1行に1つずつ記したファイル ID.txt があります。 これらのファイルを使用して下のコマンドをすべてのIPアドレスに対して実行した結果を得たいです。 コマンド▲IPアドレス▲ID > result.txt IPアドレスの配列と、IDの配列を作成し、それをforでループさせれば良いのではと考え、Webで調べましたが実現方法がわからず困っています。 素人質問で申し訳ありませんが知恵を貸してください。

  • シェルスクリプトでのファイルの存在チェック

    シェルスクリプトで、あるディレクトリの下に、*.cファイルか*.hファイルのどちらかがあるかどうかを調べるにはどうしたら良いでしょうか? ファイルが存在しない場合のエラーメッセージは表示させたくありません。 test grep *.c *.h if [ $? -eq 1 ] でやってみたのですが、*.cファイルか*.hファイルの両方が存在すればエラーメッセージは表示されませんが、どちらかがない場合はエラーメッセージが表示されてしまいます。

  • Linux シェルスクリプトについての質問です

    Linux上で 日頃、簡単な シェルスクリプトを書き実行していますが、 この頃、より自動化をしたいと思い、シェルスクリプトの中に キーボードのキーを 押したかの様な動作をさせられないかを考えています。 やりたいことは、シェルスクリプトを実行すると、knoppix の partimage にてファイル等を 指定して、1行で実行は出来るのですが、続行するのは F5 キー を押したり Enter キーを押したりの作業が必要です。 この問題は、何か他ので対処が出来るのかもしれないですが、今後、どうしても キーをおさなきゃならない環境が来たときにも対処が出来るように シェルスクリプトでこのような事が可能なのかを知りたく質問させて頂きました。 どなたか分かれば回答を宜しくお願いします。

  • シェルスクリプトによる計算

    shやkshのシェルスクリプトを勉強しています。 初歩的な事だと思いますが、5 9 3といったように数値が 記載されているファイルがあったとします。 それをスクリプトで5+9+3=17と計算させるには どのようにすれば良いでしょうか?

  • シェルスクリプトでパスワードを入力する方法について

    いつもお世話になっております。 シェルスクリプトでパスワードの入力が必要なコマンドを自動化したい場合にどの様に書けばよいのでしょう? 単純にコマンドの次の行にパスワード入れても実行されそうも無いので、何か別のコマンドで出来るのでしょうか?

  • Linuxシェルスクリプトを新しいコマンドにしたい

    Linux初級者です。よろしくお願いします。 OSにFedora Core 10, シェルにtcshを使用しています。 よく使用するコマンドを、まとめて一括で実行するように、 新しいコマンドを作成したくて、次のようなことをしていたのですが (1)ホームディレクトリにmybinというディレクトリを作成してPATHを通す。 (2)newbin1という以下の内容のシェルスクリプトを作成して、~/mybinに置いておく。 ================================== #!/bin/tcsh -f date #実行コマンド例1 echo $PATH #実行コマンド例2 ================================== (3)chmodコマンドでファイルに実行権限を与える。 上記のような方法で、作成したシェルスクリプト(newbin1)を PATHの通ったディレクトリ(~/mybin)に置いて、 > newbin1 とコマンドを呼び出しても、 "newbin1: コマンドが見つかりません" というエラーになってしまいます。 > which newbin1 とすると、ちゃんとファイルのパスが表示されるのですが、 *********************************************************** 自分で作成したシェルスクリプト(newbin1)を、 新しいコマンドとして認識させるにはどのようにすればよいのでしょうか。 また、そもそもシェルスクリプトを新しいコマンドにすることが 不可能だったりするんでしょうか? ************************************************************ 一括で実行したいコマンドが多い場合に、aliasで割り当てるのが大変なので、 できればaliasコマンドは使わずにできる方法を探しています。 基本的な質問かもしれませんが、よろしくお願い致します。

  • シェルスクリプトの制御構文について

    いつもお世話になっております。 当方、RHELで bashシェルを使用しており、制御構文を用いて 『 file1.txt にある数値が file2.txt に含まれているかどうか、また、いくつ含まれているかカウント』するスクリプトを作りたいと思っております。 ファイルの中身は下記のようになっています。 [file1.txt]       [file2.txt] 10250         10064     10298         10250 11674         12866 13298         13119 28952         13201 34966         13298 37641         37641         上記の例であれば、10250,13298,37641 が共通のものなので その数 3 というものを求めたいのです。 while文やfor文を用いて繰り返し処理をするのでは、と思い調べてはみたのですが 知識が乏しく構文を書くことが出来ませんでした。 また、PerlやRuby等使わず、シェルスクリプトのみで実行したいです。 勉強不足でとても初歩的なことを伺っているとは重々承知ですが、 どなたかお力を貸していただけないでしょうか。 宜しくお願いいたします。