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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) Excelから複数のWordファイルを操作する方法について教えて頂きたい。 やりたいことは、複数のW 2 2022/07/26 20:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- AJAX RPA(PowerAutomate)の実装について 1 2023/07/31 13:46
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- その他(クラウドサービス・オンラインストレージ) VPN通信に遜色ないクラウドサービスはありますか? 4 2022/08/05 16:19
- Visual Basic(VBA) エクセルVBAでメールの自動作成の モジュールを作ったのですが、txtファイルから読み込んだ本文が文 2 2022/07/20 15:01
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
echo "abc" >> test.txt で、先...
-
【VBA】テキストファイルから特...
-
xcopyで特定のファイルのみをコ...
-
コマンドプロンプトで標準エラ...
-
コマンド実行結果を環境変数に...
-
NULLの置き換えについて
-
FTPのバッチファイルで日付を引...
-
複数のテキストファイルをひと...
-
コマンドにてテキストファイル...
-
sedの置換文字に変数を使用した...
-
bat処理の実行結果ログ出力方法...
-
コマンドプロンプトによるファ...
-
バッチファイルで改行の出力
-
ADSL回線が自動的に切断され、...
-
batファイルの結果をテキストに...
-
viエディタでの新規ファイル作...
-
linuxのjoinコマンドがうまくい...
-
バッチファイル 現在のフォルダ...
-
エクセルのセルに設定したハイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
コマンドにてテキストファイル...
-
echoの出力の最後のスペースを...
-
echo "abc" >> test.txt で、先...
-
バッチファイル 指定行の切り出し
-
バッチファイルで改行の出力
-
コマンドプロンプトで標準エラ...
-
コマンド実行結果を環境変数に...
-
【VBA】テキストファイルから特...
-
batファイルの結果をテキストに...
-
コマンドプロンプトで相対パス...
-
.txtって、縦書きにはならない...
-
bashで、gotoのようなラベルに...
-
コマンドプロンプトでFTPでエラー
-
NULLの置き換えについて
-
sedの置換文字に変数を使用した...
-
linuxのjoinコマンドがうまくい...
-
FTPのバッチファイルで日付を引...
-
bat処理の実行結果ログ出力方法...
-
バッチファイルのfor文を使って...
おすすめ情報