안녕하세요
텍스트 파일내에
### # # 12 sfdsf ---- ==== # # #
이러한 내용들이 들어 있을때
특정문자
예를 들어 # 같은 문자의 갯수를 구하는 방법을 알고 싶습니다.
AGRV 하고 tr 쓰면 된다고 하는데
정확히 어려워서 잘모르겠습니다.
부탁드립니다.
test.txt 문서안에 "#" 문자 갯수를 구하는 방법
cat test.txt | perl -ne 'BEGIN{$sum=0}; chomp; if (/(#+)/) {$i=length($1); $sum=$sum+$i;} END{print "$sum\n"}'
하지만 위 방법의 가장 큰 단점은 "###alalalalaal##", "# # #", "###aaa###aaa##" 위 같은 문장의 경우 뒤에 오는 "#"을 지나친다는 겁니다.
이것도 무슨 방법이 있겠지만....저는 여기까지만 하겠습니다... ㅡ.ㅡ;
$cnt = 0; while (<>) { $cnt += s/#//g; } print "count = $cnt\n;"
지금 윈도우즈라서 돌려볼 수가 없는 환경이라 100% 장담은 못합니다. (s//는 substitution이 일어난 횟수를 돌려주죠.)
#!/usr/bin/perl undef $/; undef $i;
$all = <>; for (split //, $all) { if (/#/) { $i++; } } print $i, "\n";
$/="";print<>=~y/#//;
파일처리는...
open my $fh "sample.txt" or die "cannot open file : $!\n"; my $str = do { local $/; <$fh> }; close $fh;
또는 OO 스타일로 사용하면...
use FileHandle; my $fh = FileHandle->new; $fh->open("regexp.pl") or die "cannot open file: $!\n"; my $str = do { local $/; <$fh> }; $fh->close;
검색 + 개수 세기 역시 방법은 많지만 간단하게 하면...
my $count = () = ($str =~ m/#/g);
--------------------------- Smashing Watermelons~!! Whatever Nevermind~!!
Keedi Kim
---- use perl;
cookbook 에서 읽었던 내용으로 기억합니다.
my %hash; map {$hash($_}++} split //, $file_stream;
-- War doesnt determine whos right, just whos left.
War doesnt determine whos right, just whos left.
:지움: 제목을 못보고 이상한 댓글을 달았습니다. perl 질문이었군요.
OTL
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
약간은 기능이 모자라지만...
test.txt 문서안에 "#" 문자 갯수를 구하는 방법
cat test.txt | perl -ne 'BEGIN{$sum=0}; chomp; if (/(#+)/) {$i=length($1); $sum=$sum+$i;} END{print "$sum\n"}'
하지만 위 방법의 가장 큰 단점은
"###alalalalaal##", "# # #", "###aaa###aaa##"
위 같은 문장의 경우 뒤에 오는 "#"을 지나친다는 겁니다.
이것도 무슨 방법이 있겠지만....저는 여기까지만 하겠습니다...
ㅡ.ㅡ;
이렇게 하면 되겠네요.
지금 윈도우즈라서 돌려볼 수가 없는 환경이라 100% 장담은 못합니다. (s//는 substitution이 일어난 횟수를 돌려주죠.)
이런 방법도 되네요...^^
#!/usr/bin/perl
undef $/;
undef $i;
$all = <>;
for (split //, $all)
{
if (/#/)
{
$i++;
}
}
print $i, "\n";
$/="";print<>=~y/#//;
$/="";print<>=~y/#//;
파일처리는... open my
파일처리는...
또는 OO 스타일로 사용하면...
검색 + 개수 세기 역시 방법은 많지만 간단하게 하면...
---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!
Keedi Kim
----
use perl;
Keedi Kim
cookbook 에서 읽었던
cookbook 에서 읽었던 내용으로 기억합니다.
--
War doesnt determine whos right, just whos left.
War doesnt determine whos right, just whos left.
AGRV 는 뭔지
:지움:
제목을 못보고 이상한 댓글을 달았습니다.
perl 질문이었군요.
OTL
댓글 달기