
タイトルの通りなのですが、1行中の特定の文字の個数を取得し、ある個数の時だけその行を表示させようとしています。例えば特定の文字を":"とし、":"がちょうど5個ある行だけ表示させる場合、splitを使って以下のようなコードを考えましたが、どうもスマートじゃない気がします。しかもこれだと"a:b:c:d:e:"のように、行末が":"になっている場合は、$num=5となってしまい、正しく動作しません。どなたか解決策をお願いいたします。
while(<IN>){
@list = split( /:/ , $_ );
$num = @list;
if( $num == 6 ){
print "$_\n";
}
}
No.6
- 回答日時:
#5 のように, tr を使うのが普通だと思います.
・tr は「変換した文字の個数」を返す
・tr で後ろが空の場合は前と同じものを指定したとみなす (つまり実質的に変換しない)
ですから.
あ, 今は「: が 5個」だから tr/:// == 5 です.
No.3
- 回答日時:
こんにちは
name.cgi(データファイル)に以下のようにデータが入ってるとして
a:b
a:b:
a:b:c:d:
a:b:c:d:e
a:b:c:d:e:
a:b:c:d:e:f
こんな風にしてみました
open(IN,"./name.cgi");
@log=<IN>;
close(IN);
# データ数取得
@n=split(/\n/,@log);
$n=@n;
foreach(@log) {
for(1..$n){
# 行末に『:』があるか調べる
$word="$log[$j]";
if($word !~ /:$/) {
# 行末に『:』がないもので『:』の個数を調べる
@num=split(/:/,"$log[$j]");
$num=@num;
# 書き出し処理
if($num eq "5"){
print "一致するもの:$log[$j]<br>\n";
}else{
print "一致したけど:$log[$j]<br>\n";
}
}else{
print "一致しないもの:$log[$j]<br>\n";
}
$j++;
}
}
表示結果は
一致したけど:a:b
一致しないもの:a:b:
一致しないもの:a:b:c:d:
一致するもの:a:b:c:d:e
一致しないもの:a:b:c:d:e:
一致したけど:a:b:c:d:e:f
となって『a:b:c:d:e』だけ取得できました(^^)
No.2
- 回答日時:
タイトルの通り?
取得したいのは、特定の文字ではなく、
特定の文字で区切られたデータではないですか。
簡単な方法かどうか、正規表現で思うとおり指定するのはどうです。
D:\>C2.pl
NG: 1:2:3:4:5:
OK: 1:2:3:4:5:6
#!Perl
use strict;
for ('1:2:3:4:5:', '1:2:3:4:5:6') {
if (m|^([^:]+:){5}[^:]+$|) {
print "OK: $_\n";
} else {
print "NG: $_\n";
}
}
__END__
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数「exists」と「defined」の...
-
シェルスクリプトで、空白(ス...
-
数値かどうかの判定方法
-
Pythonの np.indicesに関する質...
-
16進の10進変換について
-
JSONで文字列が長い時
-
実行時エラー 3020の対策
-
セレクトボックスを非表示にし...
-
SELECT OPTIONの中身をコピペ...
-
formで特定のinputを送信しない...
-
インラインフレーム内へのリンク
-
プルダウンリストの背景色の指定
-
複数列を持ったリストボックス...
-
Application.ScreenUpdating = ...
-
メモリをアドレスを直接指定し...
-
[python] 文字列を変数名として...
-
C言語のflagの使い方が分かりま...
-
セレクトボックスのselected属...
-
日付の差分の求め方(日、分)
-
sendmailで複数の宛先にメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
16進の10進変換について
-
c言語 16進数の2進数への変換
-
I2C接続のLCDディスプレイを使う
-
【至急!!!】python言語で本を見...
-
関数「exists」と「defined」の...
-
パイソンのクラスについて
-
Pythonでコンソールをクリアす...
-
PythonのJanomeを使って品詞の...
-
至急、[python初心者] listを使...
-
Python3 プログラミング初心者...
-
Lispの、evalはどのようにすご...
-
コラボレイトリーとVSコード
-
Pythonでプログラミング プログ...
-
Python3
-
パイソン文法で
-
int(input("○○"))の使い方
-
プログラミングを教えて下さい
-
pythonを使ったプログラミング...
-
Adafruit LIS3DH 3軸加速度セン...
おすすめ情報