A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
キーブレイク処理を応用すれば、以下のような方法で実行できます。
以下のスクリプトでは、1件前のデータのキー(この場合は1列目の値)を
保存しておき、入力したデータのキーと比較して差が1の場合でなければ、
「>」を出力するようにしています。
open(IN1,"data.txt");
open(OUT1,">result.txt");
$in1_key = undef; #入力キー
@out = (); #出力データの配列
$sv_key = undef; #保存した入力キー
while (<IN1>) {
chomp($_);
($in1_key,@data) = split(" ",$_,-1);
if (($sv_key ne undef)
&& ($sv_key ne $in1_key)
&& (($in1_key - $sv_key) != 1)) {
print OUT1 ">\n";
}
print OUT1 "$_\n";
$sv_key = $in1_key;
}
close(IN1);
close(OUT1);
なお、1件目のデータの1列目の値が必ず「1」であれば、
以下のように簡略化できます。
open(IN1,"data.txt");
open(OUT1,">result.txt");
$in1_key = undef; #入力キー
@out = (); #出力データの配列
$sv_key = 0; #保存した入力キー
while (<IN1>) {
chomp($_);
($in1_key,@data) = split(" ",$_,-1);
if (($in1_key - $sv_key) != 1) {
print OUT1 ">\n";
}
print OUT1 "$_\n";
$sv_key = $in1_key;
}
close(IN1);
close(OUT1);
※入力データの区切り文字は半角スペースであることを
前提にしていますので、例えばタブ区切りなら、
($in1_key,@data) = split(" ",$_,-1);
の部分を
($in1_key,@data) = split("\t",$_,-1);
に変更してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl perlについて 2 2022/11/18 19:38
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTML::TemplateのTMPL_LOOPにつ...
-
VBのReturnの使い方
-
画面を強制的に再描画させる方法
-
範囲指定したセルを1つずつ飛...
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
DoEventsが必要な理由について
-
vbscriptでIE自動入力(途中で...
-
データベースから取得したデー...
-
DOSコマンドのループ内のTIMEコ...
-
Escキーを押すと、中断する時と...
-
流れ図(フローチャート)が分か...
-
ハッシュマーク以降のアドレス取得
-
再帰関数のインライン展開
-
Excel vba でコンボボックスの...
-
リストボックスに縦スクロール...
-
UWSCに制限時間を付けたいです
-
vb.netです。2次元配列の要素を...
-
forループは何故、forなのですか?
-
Perlのサブルーチンの引数に配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について。
-
高速に文字列の比較
-
VB6の公式リファレンスはありま...
-
連番ごとに印をつける
-
HTML::Templateのループと配列...
-
双方向リスト(?)
-
HTML::TemplateのTMPL_LOOPにつ...
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
-
どなたかこのプログラミングを...
-
VBAでの一時停止と再開の方法
-
VBA for i=1 to lastrow
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
-
ハッシュ検索はなぜ速い
-
GIFアニメをループさせたくない
-
Escキーを押すと、中断する時と...
おすすめ情報