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で質問しましょう!
似たような質問が見つかりました
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- 英語 英文の添削お願いします。【長文です。】 マッチングアプリで相手を言い負かしている時のやつです。 色々 1 2023/07/01 02:12
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl の外部モジュールの利用方法
-
LinuxにおいてのPerlのプログラ...
-
openした後、closeしないでプロ...
-
perl 初等プログラミングについて
-
perlで文字の置換又は抽出に関...
-
perlをバージョンアップしたら...
-
こんにちは ブラケッツでプログ...
-
Perlで、「が」を、「...
-
perlの構文でカンマの意味が分...
-
画像が表示でnull; this.src
-
Perlで特定文字列から特定文字...
-
ターミナルで特定の文字と文字...
-
英数文字列のうちの数値を4桁に...
-
Perlの例文でif($a==1&&$b==5&&...
-
MediBang Paint Proについて
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
アルファベットに付いて質問し...
-
Perl の外部モジュールの利用方法
-
Strawberry Perl for Windows ...
-
Perlのエラーについてご教授く...
-
perlプログラミング 空白行削除
-
INDIRECT 横に再度抽出したい
-
Perlで時間の計算
-
Wallpaper Engineでおすすめの...
-
bashスクリプト
-
perlでリテラル値はメモリにど...
-
perlのプログラミング 部分入れ...
-
Perlで特定文字列から特定文字...
-
perl LWPでURLにアクセスした時...
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
ファイルアイコンの左下に緑の□...
-
C言語の問題について
おすすめ情報