
perl初心者です。以下のようにデータがならんでいる時、
test111 aaaaaaaaabbbbbbbbcccccc
test112 aaaaccccabbbbbbbbcccccc
test113 aaaaccaaabbbbbbbbcccccc
test114 acccaaaaabbbbbbbbcccccc
test111 aacaaaaaabbbbbbbbcccccc
test112 accaaaaaabbbbbbbbcccccc
test113 aaacccaaabbbbbbbbcccccc
test114 aaaaaccaabbbbbbbbcccccc
test112の行だけ削除して、さらにそこを詰めたい時のスクリプトを作成しています。
途中からわかりません。
行を削除する関数が調べても見つからないのです。
#!/usr/bin/perl ;
open(IN, "test.doc") or die ;
open(OUT, ">testout.doc");
while(<IN>) {
chomp ;
if (/(\S+)/) {
$name = $1 ;
if ($name =~ /^test112(\S+)/) {
#ここでマッチさせて、一気に行を削除して、しかも行を詰めたいのですが
;
}
print OUT " \n" ;
}
}
close (IN) ;
close (OUT) ;
大変困っております。宜しくお願いします。
No.2ベストアンサー
- 回答日時:
一致しなかったときのみ出力するということで、
while(<IN>){
unless(/^test112/){
print OUT;
}
}
更に簡単に書くと、
while(<IN>){
print OUT unless(/^test112/);
}
となります。
削除にこだわるなら、
while(<IN>){
s/^test112\s.+//;
print OUT;
}
あたりでしょうか。
もしくは、明示的に削除したいなら、
while(<IN>){
if(/^test112\s.+/){
$_ = "";
}
print OUT;
}
というふうに、カラの文字列を代入してやるのも、値を削除するときの常套手段ですね。
この回答への補足
有り難うございました。
早速以下のスクリプトで実行してみたのですが、
困ったことに、test112は消えず、しかも改行されていたものが改行されずに打ち出されてしまいました。
どこに問題があるのでしょうか?
もう一度教えて頂きたいのですが。
宜しくお願いします。
open(IN, "test1109.txt") or die ;
open(OUT, ">aftertest1109");
while(<IN>) {
chomp ;
if (/(\S+)/) {
$name = $1 ; #
unless ($name =~ /^test112/) {
}
print OUT;
}
}
close (IN) ;
close (OUT) ;
No.3
- 回答日時:
#2です。
>早速以下のスクリプトで実行してみたのですが、
>困ったことに、test112は消えず、しかも改行されていたものが改行されずに打ち出されてしまいました。
まず、test112が消えないのは、print文が、unlessブロック内に入っていませんね。
次に、改行されないのは、chompしたなら、出力時につけてやらないといけませんから、
print OUT "$_\n";
としなくてはなりませんね。
この回答への補足
できました~~~~~~~!!!!
(*^.^*)
有り難うございましたーーーーーーーー!
本当に助かりました。明日までにできないと困ることになってました。また、ちょくちょく質問させて頂くことになるかとは思いますが、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
Perl テーブル内の文字列取得 ...
-
perlのflock関数でロックをかけ...
-
画像が表示でnull; this.src
-
Perl クッキーの使い方 クッキ...
-
Perl 複数ファイルの処理 log1....
-
Perl 記事の受け渡し
-
Perl テキスト 重複 個数
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Strawberry Perl for Windows ...
-
Perlで同じフォルダにある任意...
-
perl 正規表現でエラー
-
PerlでUTF-8のファイルの文字列...
-
Perlで特定文字列から特定文字...
-
C言語の問題について
-
どこがおかしいのか教えてくだ...
-
arduino の割り込み処理について
-
perlのflock関数でロックをかけ...
-
bashスクリプト
-
Wallpaper Engineでおすすめの...
-
perlの構文でカンマの意味が分...
-
Perl(Windows)の文法について
-
Windows版のPerlについて
おすすめ情報