シェル初心者です。
ファイル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 のループでは、うまくいきませんでした。
どなたか、よろしくお願いします。

A 回答 (1件)

シェルスクリプトを使わなくても


pasteコマンドでできそうな気がします

% paste ファイルA ファイルB > 結果の結合ファイル
でイケると思います

参考URL:http://www.aitech.ac.jp/ie/~milabo/unixmanual/os …
    • good
    • 0
この回答へのお礼

pasteコマンドで、解決できました。
どうもありがとう、ございました。

while ~ read に、こだわっていたので、
なかなか、できませんでした、

どうもありがとうございました。

お礼日時:2002/03/24 01:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qrestore b: a: /s /pができません。

FDがA,固定 DISKがBとして
restore b: A: /s /pをしたいのですが、
肝心の固定ディスクがフォーマットされてしまっています。この状態で以上のコマンドを実行する方法はあるでしょうか?
ちなみにMS-DOS3.3DのFDは持っているんですがメニュー画面を立ち上げても、インストールする方法がわかりません。やっぱり固定ディスクにMS-DOSをインストールしないと固定ディスクにFDのファイルをリストアすることは出来なのでしょうか?よろしくお願いします。ちなみにマシンはPC9801NS/Aです。

Aベストアンサー

状況がよく解りませんが、

> restore b: A: /s /pをしたいのですが、
固定ディスクb:に有るバックアップファイルをフロッピーディスクa:に復元しなさいと言う意味ですよね。

HDDはフォーマットされているのでしたらバックアップファイルは無いので無理でしょう。
と、ここまで書いて来て下の文面を読んで行くと、
> 固定ディスクにFDのファイルをリストア
と有るので、FD起動した場合、
restore A: b: /s /p
で行けるのでは?
ただ、FDの起動ディスクとバックアップファイルを納めたFDとは違うと思うのでrestoreコマンドの動きがどの様に動くかちょっと失念しているので一度試してみて下さい。

これとは別に、今後HDDから起動させたいのであれはリストア前に、HDDへMD-DOSのOSをインストールする必要は有ります。FDからの起動限定であれはその必要は有りませんが。

Q[シェルの質問]改行と結合

bsh初心者です。
よろしくお願いします。

1)下記のような","で区切られている場合、","を見つけたら
 改行して出力したいです。

[入力]
aaa,bbb,ccc,
ddd,eee,fff

[出力]
aaa,
bbb,
ccc,
ddd,
eee,
fff

2)下記のように、ある文字"aaa"をみつけたら、その次の行と結合して
 出力したいです。

[入力]
aaa:
Hello!

[出力]
aaa:Hello!

とこんな感じです。
awkとか使わないとできないでしょうか?
awkはあんまり詳しくないので、できたら
記述例をいただけると幸いです
よろしくお願いします。

Aベストアンサー

1) awk '{gsub(/,/,",\n",$0);sub("[\n]$","",$0);print}'

2) awk '/aaa/{printf("%s",$0)}!/aaa/{print}'

――とか。
Perlあたりか、1文字ずつ読んで処理するCプログラムのほうが、すっきり書けるような気もします。

QBシェルでのユーザパスワード変更

Bシェルのスクリプトを実行しユーザパスワードの変更を自動で
行いたいと思っています。

#!/bin/sh

passwd 変更したいユーザ名
abcd ・・・(変更したい人のパスワードです[新しいパスワード用])
abcd ・・・(変更したい人のパスワードです[新しいパスワードの聞きなおし用])

このようにシェルを組み実行したところ
コマンドプロンプトにてパスワードの入力
を聞かれてしまい、シェルにパスワードを
指定しているのですが認識してくれません。
この問題を解決するにはどのような
シェルの記述方法があるのでしょうか。

ご回答よろしくお願いします。

Aベストアンサー

passwdコマンドは必ず端末から入力するように作られているので、シェルスクリプトからパスワードを入力するなどは基本的にできません。

もしできるとしても記載されている方法では、abcdというコマンドをpasswdコマンドの次に実行せよという意味であり、入力という意味になりません。リダイレクションの勉強をしてください。

解決するには、
・擬似端末上でpasswdコマンドを実行させて、その擬似端末に生のパスワードを送り込む
・Cかperlでcrypt関数をつかってパスワードを暗号化してから、passwdファイルを生成したりchpass(OSによる)に渡したりする
のいずれかになると思いますが、リダイレクション以前の技術では非常に骨が折れると思います。仮にできたとしてもパスワードがもれるような穴ができかねません。

QUNIX(Bシェル)のプロンプトについて

Bシェルのプロンプトの設定は環境変数PS1に変えたい文字列を入れればOKですが、現在自分のいるディレクトリ名を表示させたい場合はどのようにしたらいいでしょうか。
PS1="["`pwd`"]" などと設定してもディレクトリが変わったらその設定したときのディレクトリ名のままです。
 また、ユーザ名も表示したいのですがsuコマンドでユーザ名を切り替えた場合プロンプトに表示させたユーザ名も変更させることはできるのでしょうか?

Aベストアンサー

純粋な sh でそれをやれとは酷な要求ですねぇ。

まず、su に関しては、最悪でも /usr/bin (unix によっては /bin ?)
より前のパスに、su っていう名前のシェルスクリプトを置いて、
適当にいじればいいかと思います。こっちは不可能ではない。

でも、cd は sh の仕様によっては無理かもしれません。シェルス
クリプトでは、親のディレクトリを変更できません。alias 機能が
あって、cd を上書きできたとして、本来の cd を実行できる機能
がないと、やはりつまづきます。最近の sh なら、alias に似た
function 機能がありますが、例えば SunOS の sh だと、cd コマ
ンドの上書きはできないようです。FreeBSD の sh と、Laser5
linux の bsh なら、次のようにできると思います。
cd () { command cd $1; PS1="`pwd` "; }

Qシェルの中から他のシェルを呼び出す

例えば、ひとつのシェルファイル( aaa.sh )の中に、
-------------------------
#!/usr/bin/csh
set HOME=/home/test/tmp
bbb.sh
-------------------------
と記述した場合、bbb.shで変数$HOMEを使いたいと思いましたが、
使えないようです。(HOME: 未定義の変数と表示されます)
どなたか、これ以外の方法で、このように
シェルからほかのシェルを呼び出して、変数も引き継がれるような方法ご存知ないでしょうか?
多分こーやれば、こうなるかも!みたいなご回答でも結構ですので情報提供をお願いします。

どうぞ宜しくお願い致します。

Aベストアンサー

たぶん環境変数は引き継がれます。
setenvを使えばいいように思います?


このカテゴリの人気Q&Aランキング

おすすめ情報