• 締切済み

ファイルA、ファイルBの各々1行ずつをreadして結合するシェル

シェル初心者です。 ファイルA、ファイルBの各々1行ずつをreadして結合するシェルを作りたいのです。 ファイルA:  1 2 3 4 5 6 ::::: ファイルB: 7 8 9 10 :::: 結果の結合ファイル: 1 2 3 7 8 4 5 6 9 10 :::::::::: :::::::::: 各ファイルは、列数(=フィールド数)が異なりますが、行数は同じです。 while ~ read のループでは、うまくいきませんでした。 どなたか、よろしくお願いします。

  • iwasa
  • お礼率68% (20/29)

みんなの回答

  • chaff
  • ベストアンサー率30% (264/874)
回答No.1

シェルスクリプトを使わなくても pasteコマンドでできそうな気がします % paste ファイルA ファイルB > 結果の結合ファイル でイケると思います

参考URL:
http://www.aitech.ac.jp/ie/~milabo/unixmanual/os.html
iwasa
質問者

お礼

pasteコマンドで、解決できました。 どうもありがとう、ございました。 while ~ read に、こだわっていたので、 なかなか、できませんでした、 どうもありがとうございました。

関連するQ&A

  • Bシェルで配列を使いたいのですが・・・

    下記のBシェルファイルで、あるテキストファイルの内容を1行ずつ読み込んで、その行を変数に代入し、後続にてその変数を表示するという処理を実現したいのですが、うまくいきません。 どのようにすればうまく行くのかまた、何故うまくいかなかったのかをご教授頂ければと思っております。 宜しくお願い致します。 <Bシェルファイル> #!/bin/sh exec 3<&0 < TBL.txt count=0 while read line do ex$count=$line count=`expr $count + 1` done exec 0<&3 3<&- echo ${ex[1]} exit 0 <結果> aho.sh: ex0=A コマンドが見つかりません。 aho.sh: ex1=B コマンドが見つかりません。 aho.sh: ex2=C コマンドが見つかりません。 aho.sh: 置換が正しくありません

  • ★Bシェルのファイルマージについて

    ★Bシェルのファイルマージについて 「ファイルA」の一部項目と「ファイルB」の全ての項目を結合し「ファイルC」を 作成するプログラムをBシェルで作成したいのですが、方法がわかりませんので、 どなたかご教授頂けませんでしょうか。 ファイルA.txt 20100904 0 aaa bbb ファイルB.txt ccc 1111 2222 3333 ddd 1111 2222 3333 eee 1111 2222 3333 ファイルA.txtの「20100904 0」をファイルB.txtの各行の先頭に 結合しファイルC.txtを作成する。 ファイルC.txt 20100904 0 ccc 1111 2222 3333 20100904 0 ddd 1111 2222 3333 20100904 0 eee 1111 2222 3333 以上、よろしくお願い致します

  • Kシェルのreadコマンドについての質問。

    Kシェルのreadコマンドについての質問。 簡単なサンプルですが、以下のように動作させたいのですが、 readコマンドが無視(動作しない)されております。 while read line do echo $line read ans  <--- 実行しても入力を求められない状況です。 echo $ans done < ./xxx 何かご存知でしたら、ご教授下さい。 宜しくお願い致します。

  • phpで作成したファイルをシェルで読み込むと最後の行を読み込めない

    phpでリストを取得し、ファイルに書き込んでいます。 リストはスペース区切りで帰ってくるので、改行コードに変換しています。 $str = "a b c"; $str =str_replace(" ","\n",$str); //リストファイルへ書き込み $pointer=fopen("aaa.txt","w"); flock($pointer, LOCK_EX); fputs($pointer, $str); flock($pointer, LOCK_UN); fclose($pointer); これをviで開いてみると a b c と予定通り書き込まれています。 このリストをシェルスクリプトでループして読み込んでいるのですが 最後の行を読み込んでくれません。 while read line do echo "$line" done < aaa.txt とやると 最後の行が読み込まれないんです!(aとbしか表示されない) ちなみに、aaa.txtをviで開いて何もせずに保存終了すると 正常に最後の行が表示されることから、aaa.txtの終了コードがうまく 書き込まれていないのでは?と予想していますが、よくわかっていません。 どうしたら最後の行を読んでくれるのでしょうか。 ※最後の行に改行コードをつけると次の空白行を読みにいってエラーになるのでそれ以外でお願いします。

    • 締切済み
    • PHP
  • シェルでファイルから1行づつ読み出す。

    ファイルから1行づつ読み込んで 変数に格納する方法がわかりません。 具体的に言うと・・・ ユーザIDが詰まった(1行に一人分)ファイル user.txt を1行づつ読みこんでいき、 ユーザアカウントをチェックするプログラム user_chk に引数として渡して行きたいと思っています。 簡単だと思っていたのですが、 さっぱりわかりません。 Cシェルを使用していますが、 Bシェルでもかまいません。

  • シェルスクリプトにおけるreadコマンドについて

    シェルから読み込まれる"param_file"において、 A B といった途中に空白を含む行が存在する場合、 while read PARAM if [ $1 = ${PARAM} ] then break fi done < "param_file" を実行すると if文実行時に "too many arguments"エラーが発生します。 Solalis上で同じ処理を実行してもエラーが 発生ませんが、Linux特有なのでしょうか。

  • Bシェルでファイルで文字の数を数えたい。

    誰か教えてください。 シェル初心者です。 ファイルにある特定の文字の数を数えたいのです。 ファイルの内容 tttattttatttttatttttatttt tttttattttatttattttattttt tttattatttttttattttattatt tttattttttatttttatttttttt 行ごとに aの数 4、4、5、3 をの値を取りたいです。 お願いします。

  • シェルでreadの文字数

    Bシェルでreadを使用する際に取得可能な文字数の制限ってあるのでしょうか。 スクリプト: 下記test.logのset行のみ、4つ目のカラムを0に変更し、 その他の行はそのまま表示させたい。 # cat test.log set test01 0 2222 6 0.83322 set test02 1 3429 7 test002 set test03 0 9872 222 0.704073409098534720779 #!/bin/sh RENAM_F=/tmp/test2.log while read F1 F2 F3 F4 F5 do if [ $F1 = "add" ]; then echo "$F1 $F2 $F3 0 $F5" >>$RENAM_F else echo "$F1" >>$RENAM_F fi done < test.log ============ 上記スクリプトを実行すると、長い文字列は切れてしまいます。 例えば、最後の値の「0.704073409098534720779」は「0.704073409098534」までしか 表示されません。

  • ファイルを行ごとに比較するシェルスクリプトについて

    ファイルを行ごとに比較するシェルスクリプトをご教授ください。 例えば(master.txt)(a.txt)(b.txt)(c.txt)(ok.txt)(ng.txt)と4つのファイルがあり、 (master.txt)と(a.txt)の行を比較し(a.txt)の中のある行が(master.txt)の行と一致した場合(ok.txt)に (master.txt)の行と一致しなかった場合(ng.txt)に入れる。 その後(master.txt)と(b.txt)の比較し(a.txt)が使用したものと同じ(ok.txt)or(ng.txt)に入れる・・・ といったように繰り返していくシェルスクリプトはどのようにして作成するのでしょうか? txtファイルの中の行はランダムに入っており、x.txtの一行一行ををmaster.txtの全行と比較する必要があります。 自分で作ってみたものは、while文を2重で使い一行ずつ取り出しcase文で行が一致した物を(ok.txt)に入れる 所までは成功しているのですが、複数回繰り返す時にどのようなロジックで不一致行を(ng.txt)に入れる ことができるのかが考え付きませんでした。 よろしくお願いいたします。

  • unixのシェルでファイル内容を読み込む

    ど初心者です。わかりづらいかもしれませんが宜しくお願いします。 以下のような処理を行いたいと考えています。 (1) aaa.sh(シェルスクリプト)にてバッチプログラムを起動 (2)バッチでエラーの場合、結果ファイル(bbb.txt)に「1」を出力する。 (3)aaa.sh(シェルスクリプト)にて結果ファイルの内容を読み取り「1」の場合は、再度バッチプログラムを起動する。 このうち(3)の処理にて、結果ファイルの読み込み方法がわかりません。 調べた結果、以下のような処理で可能なようですが・・ while read LINE; do echo $line done < aaa.txt 読み込むのは1行なので、ループ処理にはしたくないのですが、例えば「read LINE aaa.txt」のような簡単なコマンドで、ファイルの中身を読み込むことはできないのでしょうか? 実はUNIXが初めてで、しかもスケジュールに余裕がないため焦っております。 なにぶん知識不足な故、ちんぷんかんぷんな質問かも知れませんが、よろしくお願いいたします。