IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (https://www.imho.ws/forumdisplay.php?f=76)
-   -   Помогите сделать такой скрипт на perl (https://www.imho.ws/showthread.php?t=78669)

StRaNNiK 28.01.2005 17:30

Помогите сделать такой скрипт на perl
 
Помогите плз сделать такой вот скрипт на perl.

Имеется текстовый файл. В нем много текста. Задача: запустить скрипт, который произведет фильтрацию. Фильтрация такая: если в строке встречается слово LINUX, то строчку пропускаем. если нет, то удаляем.

Gike 28.01.2005 17:38

Код:

open(file,"file.txt");
open(file_out,">new_file.txt");
while($str=Жfile>){
if($str=~/LINUX/){print file_out $str;}
}
close(file);
close(file_out);

вместо Ж надо <

Ghost 28.01.2005 17:56

Gike
Что-то у меня твой скрипт выдает ошибку... Вот такой накатал, проверил - вроде работает...
Код:

open FILE, "file.txt";
my @indata = < FILE>;
close FILE;

open FILE, ">file.txt";
foreach (@indata) {
  print FILE $_ if $_ =~ /LINUX/;
}
close FILE;

Добавлено:
Gike, извини. Все работает. Просто скрипт форума немного накосячил в коде - отказался выводить FILE в угловых скобках после $str= у тебя, и @indata= - у меня. :idontnow:

З.Ы. Итить... Третий раз правлю... :(

StRaNNiK 28.01.2005 18:26

:( одна и таже ошибка :( в обоих скриптах
./script: line 1: syntax error near unexpected token `file,"qw.txt"'
./script: line 1: `open(file,"qw.txt");'

Ghost 28.01.2005 18:39

Просто Я
Эээ... У эти меня скрипты работают оба. Попробуй имя файла брать не в кавычки ("), а в апострофы ('). Или писать директивы open и close без скобок (хотя, какая, собственно, разница? :idontnow: ).

StRaNNiK 28.01.2005 18:58

блин.. что ж такое... :(

Gike 28.01.2005 19:13

извини за глупый вопрос но в начале ты приписал #/usr/bin/perl или как там у тебя на машине надо?

StRaNNiK 28.01.2005 19:13

о, все :)
а теперь такая просьба :) а нельзя ли его переделать как-то, чтобы он проверял строку сразу на 2 слова. если одно из двух в строке имеется, то ее оставляем

Ghost 28.01.2005 19:20

Просто Я
Есессно, например:
Код:

print FILE $_ if $_ =~ /(LINUX)|(WINDOWS)/;

rontommy 28.01.2005 22:00

А я люблю использовать grep :) :

open FILE, "file.txt";
my @indata = grep( /(LINUX)|(WINDOWS)/, < FILE>);
close FILE;

open FILE, ">file.txt";
print FILE @indata;
close FILE;

Drakosha 29.01.2005 12:14

если уж про grep: :yees:

$ grep LINUX our.file > /tmp/tmp.file
$ mv /tmp/tmp.file our.file


Часовой пояс GMT +4, время: 05:24.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.