![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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ランキング
-
if($key){ ($key eq 'aaa') ||...
-
画面を強制的に再描画させる方法
-
ListBox 複数選択 で オートフ...
-
VBA Dir関数でファイルをループ...
-
VBAのautofilter、criteriaの配...
-
VBAでの一時停止と再開の方法
-
DOSコマンドのループ内のTIMEコ...
-
DoEventsが必要な理由について
-
再帰関数のインライン展開
-
vb.netからエクセル関数書き込み
-
vb.netです。2次元配列の要素を...
-
vbscriptでIE自動入力(途中で...
-
UWSCの終了の仕方
-
まったく同じファイルのハッシ...
-
For文を使った九九表の作成
-
C言語でファクト関数を使わずに...
-
隣同士の数字を足し合わせる
-
チェックボックスのperlでの値...
-
ループフリー
-
ExcelVBA FindNextを使用して条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
双方向リスト(?)
-
if($key){ ($key eq 'aaa') ||...
-
HTML::TemplateのTMPL_LOOPにつ...
-
連番ごとに印をつける
-
変数に何も入ってないとき
-
VB6の公式リファレンスはありま...
-
Perlのリファレンスについて
-
ハッシュを無名変数へ代入して...
-
DBIを使用してデータを連想配列...
-
bashのリファレンス的なWEB...
-
ハッシュの配列を作ることは可...
-
Yahooの掲示板のような掲示板を...
-
Perl構造体、出力方法
-
クラスの作り方
-
重複する値を表示しない
-
ファイルからデータを読み込ん...
-
サブルーチンの返値に配列のハ...
-
構造体の配列の指定方法
-
C言語について。
-
Perlで縦横変換のような事をし...
おすすめ情報