The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"BASH. Как читать файл построчно?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"BASH. Как читать файл построчно?"
Сообщение от teebot Искать по авторуВ закладки on 03-Фев-03, 16:21  (MSK)
Здравствуйте.

Появилась необходимость читать содержимое файла построчно. В строке присудствуют пробелы поэтому так
elist=$(/bin/cat /tmp/robot/ea)
for str in $elist;
do
...
done
не получается, берутся отдельные слова.

Как читать строки целиком, независимо от того етсь там пробелы или другие символы или нет?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: BASH. Как читать файл построчно?"
Сообщение от zlinuxan emailИскать по авторуВ закладки on 03-Фев-03, 18:04  (MSK)
Попробуй делать тож'самое на перле.
Синтаксис почти один в один и есть такая штука, как split, с которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)

Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
Во как!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: BASH. Как читать файл построчно?"
Сообщение от teebot Искать по авторуВ закладки on 03-Фев-03, 18:22  (MSK)
>Попробуй делать тож'самое на перле.
>Синтаксис почти один в один и есть такая штука, как split, с
>которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)
>
>
>Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
>
>Во как!

Ты знанешь пробовал, но там другая проблема (а может вовсе и не проблема) мне надо вызвать скрипт.
прога такая:
open (FILE, "имя_файла");
@lines=<FILE>;
close (FILE);
$kol=@lines;
for ($i=0;$i<$kol;i++)
{
  #тут вызывается скрипт которому передается результат чтения файла - строка
}
так вот сколько бы повторов не было, цикл вываливается после первого.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: BASH. Как читать файл построчно?"
Сообщение от hellman emailИскать по авторуВ закладки on 03-Фев-03, 18:31  (MSK)
>>Попробуй делать тож'самое на перле.
>>Синтаксис почти один в один и есть такая штука, как split, с
>>которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)
>>
>>
>>Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
>>
>>Во как!
>
>Ты знанешь пробовал, но там другая проблема (а может вовсе и не
>проблема) мне надо вызвать скрипт.
>прога такая:
>open (FILE, "имя_файла");
>@lines=<FILE>;
>close (FILE);
>$kol=@lines;
>for ($i=0;$i<$kol;i++)
>{
>  #тут вызывается скрипт которому передается результат чтения файла - строка
>
>}
>так вот сколько бы повторов не было, цикл вываливается после первого.

не знаю почему может вываливаться, но помоему свот такой код приятней.
open(FILE, "< /tmp/file");
foreach my $line (<FILE>) {
&some_sub($line);
}
close(FILE);

ну или
open(FILE, "< /tmp/file");
my @file = <FILE>;
close(FILE);
foreach my $line (@file) {
&some_sub($line);
}


где ессесно функция some_sub что то делает со строкой.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: BASH. Как читать файл построчно?"
Сообщение от teebot Искать по авторуВ закладки on 03-Фев-03, 18:58  (MSK)
>>>Попробуй делать тож'самое на перле.
>>>Синтаксис почти один в один и есть такая штука, как split, с
>>>которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)
>>>
>>>
>>>Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
>>>
>>>Во как!
>>
>>Ты знанешь пробовал, но там другая проблема (а может вовсе и не
>>проблема) мне надо вызвать скрипт.
>>прога такая:
>>open (FILE, "имя_файла");
>>@lines=<FILE>;
>>close (FILE);
>>$kol=@lines;
>>for ($i=0;$i<$kol;i++)
>>{
>>  #тут вызывается скрипт которому передается результат чтения файла - строка
>>
>>}
>>так вот сколько бы повторов не было, цикл вываливается после первого.
>
>не знаю почему может вываливаться, но помоему свот такой код приятней.
>open(FILE, "< /tmp/file");
>foreach my $line (<FILE>) {
> &some_sub($line);
>}
>close(FILE);
>
>ну или
>open(FILE, "< /tmp/file");
>my @file = <FILE>;
>close(FILE);
>foreach my $line (@file) {
> &some_sub($line);
>}
>
>
>где ессесно функция some_sub что то делает со строкой.

что самое интересное нужно вызывать не перловскую процедуру, а BASH скрипт корорый написан до меня.
делаю exec "путь_и_имя_скрипта";
он отрабатывает, а цикл уже не продолжается.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: BASH. Как читать файл построчно?"
Сообщение от zlinuxan emailИскать по авторуВ закладки on 04-Фев-03, 04:11  (MSK)

>что самое интересное нужно вызывать не перловскую процедуру, а BASH скрипт корорый
>написан до меня.
>делаю exec "путь_и_имя_скрипта";
>он отрабатывает, а цикл уже не продолжается.
Так вызывай его в цикле типа вообще тупого
my $x=1;
       while ($x){
         exec_до _посинения;
                  }

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: BASH. Как читать файл построчно?"
Сообщение от teebot Искать по авторуВ закладки on 04-Фев-03, 09:52  (MSK)
>
>>что самое интересное нужно вызывать не перловскую процедуру, а BASH скрипт корорый
>>написан до меня.
>>делаю exec "путь_и_имя_скрипта";
>>он отрабатывает, а цикл уже не продолжается.
>Так вызывай его в цикле типа вообще тупого
> my $x=1;
>       while ($x){
>         exec_до _посинения;
>            
>      }

Спасибо за совет, но задача состоит из двух частей.
1) Читать из файла построчно
2) Прочитанное передавать BASH скрипту.

зачем же мне бесконечный while если нужно ровно столько сколько строк в файле.

Видимо надо иначе подойти к решению проблемы. Наверное я выбрал не самы лучший алгоритм.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: BASH. Как читать файл построчно?"
Сообщение от uldus Искать по авторуВ закладки on 04-Фев-03, 14:07  (MSK)
>Появилась необходимость читать содержимое файла построчно.

cat file.txt| while read line; do                    
    echo "$line"
done

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: BASH. Как читать файл построчно?"
Сообщение от spf Искать по авторуВ закладки on 04-Фев-03, 20:24  (MSK)
>>Появилась необходимость читать содержимое файла построчно.
>
>cat file.txt| while read line; do
>    echo "$line"
>done

Если хотим сэкономить на один процесс (cat) в ущерб
читабельности, то

while read line
do
   echo "$line"
done < file.txt

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру