
Bシェルのスクリプトで複数のファイルを交互に操作したいと考えています。
例えば、
A.txt
A
A
B.txt
B
B
という2つのファイルがあったとして、これを交互に読み取り、
C.txt
A
B
A
B
というファイルを作成したいと考えています。
現在は1行ごとに別ファイルを作成し、最後にそれをマージするという変な方法をとっています。
awkやperlを使用しないで、純粋にBシェルのスクリプトだけでスマートに実現するにはどのような方法がありますでしょうか。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
スマートではないかもしれませんが、以下のシェルスクリプトではどうでしょうか?
Linux上では動作確認はしていませんが、手元で動作確認出来る環境(FreeBSD)のbash上では動作したので多分大丈夫だとは思いますが、動作しなかった場合は済みません。
手元の環境ではbashが/usr/local/bin/bashなので、そこは環境にあわせて変更(/bin/shかな)してください。
○sample.sh
-------8<-------8<-------8<-------8<-------8<-------8<-------
#!/usr/local/bin/bash
exec 3< A.txt ; exec 4< B.txt ; exec 5> C.txt
fd=3 ; e3=0 ; e4=0
while :
do
read LINE 0<&$fd
st=$?
[ $st -ne 0 ] && { [ $fd -eq 3 ] && e3=1 || e4=1 ;}
[ $e3 -ne 0 -a $e4 -ne 0 ] && break
[ $st -eq 0 ] && echo $LINE >&5 || echo "" >&5
[ $fd -eq 3 ] && fd=4 || fd=3
done
-------8<-------8<-------8<-------8<-------8<-------8<-------
○実行例(FreeBSD/bash)
-------8<-------8<-------8<-------8<-------8<-------8<-------
%bash --version
GNU bash, version 3.1.17(0)-release (i386-portbld-freebsd6.2)
Copyright (C) 2005 Free Software Foundation, Inc.
%cat A.txt
A
A
A
A
%cat B.txt
B
B
B
B
B
B
%cat C.txt
cat: C.txt: No such file or directory
%./sample.sh
%cat C.txt
A
B
A
B
A
B
A
B
B
B
%
-------8<-------8<-------8<-------8<-------8<-------8<-------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
echo "abc" >> test.txt で、先...
-
echoの出力の最後のスペースを...
-
コマンドプロンプトで相対パス...
-
フォルダに入っているファイル...
-
エクセルのセルに設定したハイ...
-
リダイレクト >> を複数のファ...
-
PIFファイルにつきまして
-
コマンドプロンプトで標準エラ...
-
バッチファイル 現在のフォルダ...
-
FTPのバッチファイルで日付を引...
-
ファイル名ソートにハイフン
-
バッチファイルで改行の出力
-
バッチファイル 指定行の切り出し
-
Linux mkdirでサブフォルダごと...
-
エクスプローラのフォルダー内...
-
ワードのテキストボックスの中...
-
コマンドプロンプトのエラーに...
-
コマンドプロンプトの「%1」と...
-
大量のフォルダからひとつのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
xcopyで特定のファイルのみをコ...
-
【VBA】テキストファイルから特...
-
echo "abc" >> test.txt で、先...
-
コマンドプロンプトで相対パス...
-
リダイレクト >> を複数のファ...
-
コマンドプロンプトで標準エラ...
-
バッチファイル 指定行の切り出し
-
バッチファイルのfor文を使って...
-
バッチファイル 現在のフォルダ...
-
コマンド実行結果を環境変数に...
-
バッチファイルで改行の出力
-
NULLの置き換えについて
-
.txtって、縦書きにはならない...
-
複数テキストファイル連結につ...
-
バッチコマンドの「set」で入力...
-
Diskpart のリダイレクトの質問...
-
特定のファイルだけをサブディ...
-
DOSプロンプト:一番速く10万...
-
nkfで全角ハイフンが半角になる...
おすすめ情報