Vypros?

7 отговора 290 прегледа
#1

Vypros?

Imam edin file s danni na ime "data"
Vytre imam po slednia red podredeni nesta:
1:text
2:text
3:text
4:text
Vyprosa mi e kak da iskaram reda s tekst otgovariast na nomera mu - no samo texta bez syotvetnia mu nomer.
Zna4i mislia 4e ste stane s "grep" ama nesto ne moga da go napravia.
Moje da se promeni malko principa na fila ako e nalojitelno vajnoto e da stane .
Blagodaria predvaritelno

Отговор
в отговор на GGG #2

Re: Vypros?

#!/usr/bin/perl

$find_this_line_number = "2";
open (FILE, "my_file.txt");
@lines = <FILE>;
close FILE;
foreach (@lines){
chomp $_;
if (/(^$find_this_line_number:)(.+)?/){
$text_that_I_find=$2;}
}
#for test
print "$text_that_I_find\n";

Отговор
в отговор на TooLame #3

Re: Vypros?

Mersi za otgovora .
Bih iskal malko help
Zna4i dokolkoto vijdam stava vypros za text iskarvan po - line number...
Vsy6nost iskam da pitam kade v scripta se zadava 4e 4isloto pred texta niama da izleze?

Отговор
в отговор на TooLame #4

Re: Vypros?

MMMDA to4no tova mi triabvashe :)
Raboti perfectno!

Отговор
в отговор на GGG #5

Re: Vypros?

open IN, "file.txt";
while (<IN>) {split(/:/); $temp{$_[0]}=$_[1];}
chomp %temp;
print $temp{3};

Отговор
в отговор на GGG #6

Re: Vypros?

Ami v gorniq primer nikade ne se kazva da NE izleze 4isloto, a se kazva da izlezne samo texta sled dvete to4ki ":"
if (/(^$find_this_line_number:)(.+)?/){
$text_that_I_find=$2;}

tozi regex razdelq celiqt red na 2:
4isloto+dvete to4ki vliza v zapazenata promenliva $1 zashtoto e v parvite skobi ot regex-a
(.+)? - tova zna4i edin ili pove4e savpadnali simvoli v niza i vliza v promenlivata $2,sled koeto sydyrjanieto se prisvoqva na $text_that_I_find
ako ne ti e qsno pak pitai

Отговор
в отговор на avo #7

Re: Vypros?

file.txt
1:text
2:text
3:My favorit colors is: Green,Red,Blue
4:text
EOF
print $temp{3}; ??
mislia che v sluchaia split ne e udachen
e ako failafile.txt e:
1:text
2:My favorit coloris:
Green,Red,Blue
3:text
efekta v po gornia mi primer e pochti sashtia

Отговор
в отговор на TooLame #8

Re: Vypros?

Saglasen sym. Triabva da e regex. Osven ako ne polzvash drug separator - primerno ":::" - togava pak sas split.

No az lichno bih preporachal regex:

$line =~ s/^(\d+):(.*?)/is;

togava chastta koiato te interesuva shte se namira v $2

Отговор