- 締切済み
パイプラインとリダイレクトの違い
以下の二つの処理に違いを知りたいです。 % cat filename | COMMAND % COMMAND < filename どちらも、COMMANDにfilenameの中身を標準入力で与えています。 前者はファイル終端(EOF)がCOMMANDに送られず、後者はEOFも送られる、という認識でよいでしょうか?
- みんなの回答 (6)
- 専門家の回答
関連するQ&A
- シェルのリダイレクトとパイプについて
シェルのリダイレクトとパイプについての質問です. リダイレクトでコマンドの標準出力をファイルに指定した後に, パイプを置いて,もう一つコマンドを並べたとき, 後の方のコマンドの標準入力はどうなるのでしょうか? 例えば, ls >outfile |cat ならば, catの標準入力には,何も入ってこないと思うのですが, これを実行すると,lsの結果がoutfileに書き込まれ, 次のプロンプトが表示されます. 普通,catを引数なしで実行すると, EOFが入力されるまで,入力待ちになると思うのですが, こうならないのは,シェルがcatの標準入力にEOFを入力したからだと 考えていいのでしょうか. よろしくお願いします. (質問の意味が分かりにくければご指摘下さい.)
- ベストアンサー
- Linux系OS
- 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の理解のため、あえてやってみたいのです。 よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- SUNOSのエスケープシーケンス(終端文字¥0)について・・。
こんにちわ, 今SUNOSでC言語を学んでいるのですが, 終端文字は\0だとおもっていたのですが,うまくいきません。具体的には次のとおりです。 char command[1000]; strcpy(command, "cat "); strcat(command, _i_filename); strcat(command, " |sed -e 's/ /\\x0/g' "); /* sのあとはスペース1つ */ system(command); Linuxではスペースの所に'\0'文字が入るのですが,SUNOSではそれをx0と認識してしまうようです。 なにかSEDのバージョンや会社に違いがあるからなのでしょうか。 よろしくお願いします。
- ベストアンサー
- その他(OS)
- kシェルのリダイレクトについて
kシェルを用いてツールを作っています。 このツールを使用する際には、全ての出力をファイルに出力して 処理の最後に出力ファイルをcatで表示したいと考えております。 出力は、exec 2>&1 ~.logでファイル出力しますが、 そのファイルをcatすると、catの結果もファイル出力になってしまいます。 catを標準出力するにはどうしたら宜しいでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- 二つの違い
「程度の差こそあれ、気分が落ち込む」 「気分が落ち込む」 この二つの違いは、前者が「10~1」までの間なのに対し、後者は「10~0」までの間、という認識で問題ないと思いますか?
- 締切済み
- 日本語・現代文・国語
- 標準I/OからのEOFの入力
iBook(OSX)のプロジェクトビルダーでcarbonのファイルを作っています。プログラムの中で getchar() != EOF という文で入力がEOFかどうかを検出しようとしているのですがreturnやenterではEOFと認識されないようです。標準I/O (キーボード)からEOFを入力するにはどうしたら良いのでしょうか。
- 締切済み
- Mac
- テキストの読込について
あいうえお かきくけこ さしすせそ ↑のような中身のテキストファイルを読み込んで、 あいうえおかきくけこさしすせそ ↑のように、改行をなくして新規テキストに出力する プログラムを作成中なのですが、上手くいかず 困っています。 改行を無視した取り込みは出来るのでしょうか? もしくは、LineInput等で読み込んだ後、 改行を取り除くような処理をするのでしょうか? 下記は、現在まで作ったプログラムなのですが、 これだと、改行も同時に取り込んでしまっています。 Private Sub Command1_Click() Dim sData As String Dim FileName As String CommonDialog1.Filter = "テキスト|*.txt|全てのファイル|*.*" CommonDialog1.ShowOpen FileName = CommonDialog1.FileName Open FileName For Input As #1 Do Until EOF(1) Line Input #1, sData Loop Close #1 環境は、WindowsXP、VB6.0エンタープライズです。 以上、宜しくお願い致します<(_ _)>
- ベストアンサー
- Visual Basic
- C言語のファイル処理について
環境 OS:Windows VISTA Ultimate コンパイラ:Borland C++ Compiler 5.5 Cの基礎的な勉強をしています。2つほど質問があります。 1つ目は、ファイル処理の勉強としてプログラムを作っているのですがファイルが上手く開けません。プログラムとしてはファイルを開いて、ファイル内に記述されている数値を取り出し、計算を行う簡単なものを作っています。ソースは以下のものになります。 #define N 256 int file_read(char filename[] , int count[]) { int m; FILE *fp; fp=fopen(filename,"r"); if(fp==NULL) { /* オープン失敗 */ printf("Not Found File\n"); return -1; /* 戻り値-1 */ } while((m = fgetc(fp)) != EOF) { 読み取った数値配列に格納する処理 } fclose(fp); return 0; } int operation(int count[]) { 計算処理 return 0; } int main(void) { int *count[N]; char *filename[256]; memset(count, 0, sizeof(count)); /* 変数・配列初期化 */ printf("Please Input Filename:"); fgets(filename, sizeof(filename), stdin ); if(file_read(filename,count) != -1) operation(count); return 0; } バッファオーバーランの事を考え、fgetsによるキー入力にしたのですがファイルオープン失敗になってしまいます。fgetsのあと、変数filenameの中身を確認したところ、キー入力した文字はきちんと代入されていました。オープンするファイルはきちんとあるのですが・・。 fgetsをscanfに変えた場合は上手くいくので書式指定をしてscanfを使えばいいのでしょうが、なぜfgetsで上手くいかないでしょうか? 2つ目はgetchar()とfgets()に関してです。 while((c = getchar()) != EOF) { . .処理 . fgets(変数, sizeof(変数), stdin ); . .処理 . } とした場合、fgetsの処理が無視されてしまいます。 これはどういったことが原因なのでしょうか。 ご教授、お願いいたします。
- ベストアンサー
- C・C++・C#
- 2つの医療用クロックスの違いは何?
医療用クロックスが以下の2つ発売されていますが、 HPなどを見てもまったく違いが分かりません ・crocswatt vent ・specialist vent 前者のほうが新しいモデルで、ドラマに登場したため人気商品となっているようですが、 見た目を含め後者と何が違うのかさっぱりわからず、 それなら少し安い後者のほうを買ったほうがいいのだろうかと迷っています。 違いが分かる方、教えてください。
- ベストアンサー
- その他(生活・暮らし)
- Windowsの検索とGoogleDesktopSearchの違い
Windows標準で使用できる検索(スタート⇒検索)と GoogleDesktopSearchなどのローカルディスク検索ソフトの違いって何なのでしょうか? 検索速度の違いだけは分かったのですが、 両者とも ファイルの中身も検索可能 ネットワーク越しのファイルも検索可能 と認識しております。 検索速度だけの違いでしょうか? どなたかご存知でしたら教えてください。 よろしくお願い致します。
- ベストアンサー
- その他(ソフトウェア)
お礼
どうもすみません! ありがとうございます。
補足
まず、(1)と(2)でscriptを用いて出力をファイルにダンプし、それらをdiffしたところ、かなりの量の違いが出力されました。プロセスIDなど、変わってしかるべき以外の細かい点もあります。これは、詳しく見ないと分からないですね。 次に、お勧めのように % grep "read(0," ダンプ結果 として、(1)と(2)それぞれでread(0,...を抜き出し、diffを取ったところ、全く差がありませんでした。従って、read(0,...という標準入力の読み取りに関する操作では、違いがないということが判明しました。 さらに、ダンプ結果において、(1)の方法ではエラーが出ている箇所を探し出してその周辺を比較しました。制限字数が足りないので次に出します。