テキストファイルを、指定した数値の倍数の行を、指定した個数に分割するバッチファイルを作成しようとしています。
例えば、以下の様な内容の「in.txt」というテキストファイルを3分割したい場合、
----- in.txtの内容 -----
1
2
3
4
5
6
7
8
9
10
------------------------
以下の様な内容で、
「out1.txt」「out2.txt」「out3.txt」として出力したいのです。
----- out1.txtの内容 -----
1
4
7
10
--------------------------
----- out2.txtの内容 -----
2
5
8
--------------------------
----- out3.txtの内容 -----
3
6
9
--------------------------
自分はプログラミングの知識がないので、WEBに書かれている構文を少し書き換えたりして試しているのですが、うまく行きません。
AWKを使い、以下のようなバッチファイルを作成して実行してみましたが、「out3.txt」だけがうまく行きませんでした。構文の意味も分からないので修正も出来ません。
awk "NR%%3==1" "in.txt" > "out1.txt"
awk "NR%%3==2" "in.txt" > "out2.txt"
awk "NR%%3==3" "in.txt" > "out3.txt"
AWKの解説ページを読み始めたのですが、時間的な猶予があまり無く、今回質問させて頂いた処理が出来るようになるまでまだ時間が掛かりそうなので、どなたかお分かりの方がおられましたお教え頂けないでしょうか。
AWKでなくとも、sedでもPerlでもその他のコマンドでも構いませんし、スクリプトファイルを読み込めるコマンドでしたらスクリプトでの書き方でも結構ですので、ご存知の方がおられましたらお教え頂けないでしょうか。
No.1ベストアンサー
- 回答日時:
perlで行います。
以下のようなスクリプトを作成してください。
--------------------------------------
@data = <>;
open(F1,">out1.txt");
open(F2,">out2.txt");
open(F3,">out3.txt");
for($i=0;$i<scalar(@data);$i++){
if ($i%3 == 0){
print F1 $data[$i];
}
if ($i%3 == 1){
print F2 $data[$i];
}
if ($i%3 == 2){
print F3 $data[$i];
}
}
close(F1);
close(F2);
close(F3);
------------------------------
このスクリプトをsample.plと名前をつけて保存してください。
名前は任意です。(他の名前でもかまいません)
in.txtがあるディレクトリと同じディレクトリに保存してください。
そしてコマンドプロンプトで
perl sample.pl in.txt
と入力してください。
そのディテクトリ下に
out1.txt,ou2.txt,out3.txtが作成されます。
ご回答ありがとうございます。
ActivePerlをインストールしてやってみました。
結果は見事に出来ました。本当にありがとうございました。助かりました。
これからプログラミングも勉強して行きます。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MATLABでカーブフィットしたデ...
-
連番のファイルを何個も開きたい
-
ファイル名を複数個配列で確保...
-
[perl] もっとシンプルに改良、...
-
VBAコードを張り付け後のエクセ...
-
バッチファイルの作り方(CSV→...
-
batファイルでrenameができませ...
-
close()で例外が投げられる理由
-
vba dir の相対パス
-
MATLABのm-fileについて
-
文字列をカウントする方法
-
至急お願いします。C言語で.img...
-
一定時間が経過したフォルダの削除
-
JavaでCSVファイルを高速に読む...
-
画像アップロード機能を追加し...
-
csvファイルの横方向への改行に...
-
Perlで特定行から特定行までを...
-
【エクセル】改行無しテキスト...
-
perlのエディタでおすすめを教...
-
フォルダ内のファイルを全て開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名を複数個配列で確保...
-
Fortranで1行飛ばして読み込む方法
-
perlで指定範囲を複数ファイル...
-
Pythonでegrep機能をつかいたい
-
「パスが見つかりません」とい...
-
ifstream/ofstream について
-
テキストファイルの各行を配列...
-
Perlのワンライナーをスクリプ...
-
ifstream を利用した1行分のテ...
-
C++でのテキストファイル読み込...
-
perlプログラム 外部複数ファ...
-
system関数と引数について
-
Perl 重複カウント 上位3名
-
Pythonで非日本語のUnicode文字...
-
shellのコマンド deffの差分の...
-
perlで先頭の数値をみて昇順に...
-
Visual Basicを使って三平方の...
-
while文がうまく動かない
-
Perl Grepについて
-
Perlによるディレクトリ内の連...
おすすめ情報