The OpenNET Project / Index page

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

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

"Помогите с bash-ем"
Сообщение от alexc emailИскать по авторуВ закладки on 29-Ноя-02, 16:01  (MSK)
Помогите плз чайнику. Как в Bash считать файлу построчно и вывести куда- нибудь.
Пробовал типа while read str < file.txt; do echo $str; done ,но он выводит только первую строку и зацикливается на этом, а как сделать чтобы он считал построчно до EOF???
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "RE: Помогите с bash-ем"
Сообщение от LinaS emailИскать по авторуВ закладки on 29-Ноя-02, 16:38  (MSK)
>Помогите плз чайнику. Как в Bash считать файлу построчно и вывести куда-
>нибудь.
>Пробовал типа while read str < file.txt; do echo $str; done ,но
>он выводит только первую строку и зацикливается на этом, а как
>сделать чтобы он считал построчно до EOF???


можно по всякому, например, так:

for i in `cat file`; do echo $i; done

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

2. "RE: Помогите с bash-ем"
Сообщение от alexc Искать по авторуВ закладки on 29-Ноя-02, 16:46  (MSK)

>for i in `cat file`; do echo $i; done

И он выводит каждое слово из первой строки на новой строке, а я имел ввиду просто перечитать файл построчно через перем-ую.

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

3. "RE: Помогите с bash-ем"
Сообщение от LinaS emailИскать по авторуВ закладки on 29-Ноя-02, 16:53  (MSK)
>
>>for i in `cat file`; do echo $i; done
>
>И он выводит каждое слово из первой строки на новой строке, а
>я имел ввиду просто перечитать файл построчно через перем-ую.


вах, лажа вышла...
можешь так:

for i in `cat file|tr " " "_"`; do echo $i|tr "_" " "; done

а проще это сделать на perl %)

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

4. "RE: Помогите с bash-ем"
Сообщение от alexc emailИскать по авторуВ закладки on 29-Ноя-02, 17:03  (MSK)
>>
>>>for i in `cat file`; do echo $i; done
>>
>>И он выводит каждое слово из первой строки на новой строке, а
>>я имел ввиду просто перечитать файл построчно через перем-ую.
>
>
>вах, лажа вышла...
>можешь так:
>
>for i in `cat file|tr " " "_"`; do echo $i|tr "_"
>" "; done
>
>а проще это сделать на perl %)
1. А что значит |tr " " "_" и tr " "
2. Лучше на Perl, а наводочку где рыть плз. Никогда не писал на Perl

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

5. "RE: Помогите с bash-ем"
Сообщение от LinaS emailИскать по авторуВ закладки on 29-Ноя-02, 17:10  (MSK)
>>>
>>>>for i in `cat file`; do echo $i; done
>>>
>>>И он выводит каждое слово из первой строки на новой строке, а
>>>я имел ввиду просто перечитать файл построчно через перем-ую.
>>
>>
>>вах, лажа вышла...
>>можешь так:
>>
>>for i in `cat file|tr " " "_"`; do echo $i|tr "_"
>>" "; done
>>
>>а проще это сделать на perl %)
>1. А что значит |tr " " "_" и tr " "
>
>2. Лучше на Perl, а наводочку где рыть плз. Никогда не писал
>на Perl

tr заменяет один символ на другой - тут она сначала заменяет пробел на подчерк, когда считывает строку, чтобы не перескакивало с каждым пробелом на новую, а при выводе - заменяет обратно
ну это был не лучший вариант, т.к. у тебя в строке могут быть и подчерки...

а на перле вот:

#!/usr/bin/perl

open(FILE, "< filename") or die "Error: $!\n";
while(<FILE>) {
  print $_."\n";
}
close(FILE);

и все. Никакие пробелы не страшны :)

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

6. "RE: Помогите с bash-ем"
Сообщение от alexc emailИскать по авторуВ закладки on 29-Ноя-02, 17:13  (MSK)
>>>>
>>>>>for i in `cat file`; do echo $i; done
>>>>
>>>>И он выводит каждое слово из первой строки на новой строке, а
>>>>я имел ввиду просто перечитать файл построчно через перем-ую.
>>>
>>>
>>>вах, лажа вышла...
>>>можешь так:
>>>
>>>for i in `cat file|tr " " "_"`; do echo $i|tr "_"
>>>" "; done
>>>
>>>а проще это сделать на perl %)
>>1. А что значит |tr " " "_" и tr " "
>>
>>2. Лучше на Perl, а наводочку где рыть плз. Никогда не писал
>>на Perl
>
>tr заменяет один символ на другой - тут она сначала заменяет пробел
>на подчерк, когда считывает строку, чтобы не перескакивало с каждым пробелом
>на новую, а при выводе - заменяет обратно
>ну это был не лучший вариант, т.к. у тебя в строке могут
>быть и подчерки...
>
>а на перле вот:
>
>#!/usr/bin/perl
>
>open(FILE, "< filename") or die "Error: $!\n";
>while(<FILE>) {
>  print $_."\n";
>}
>close(FILE);
>
>и все. Никакие пробелы не страшны :)
Спасибо, буду эту рыбу чистить(а лучше с пивом !)

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

7. "RE: Помогите с bash-ем"
Сообщение от LS emailИскать по авторуВ закладки on 30-Ноя-02, 03:18  (MSK)
>Помогите плз чайнику. Как в Bash считать файлу построчно и вывести куда-
>нибудь.
>Пробовал типа while read str < file.txt; do echo $str; done ,но
>он выводит только первую строку и зацикливается на этом, а как
>сделать чтобы он считал построчно до EOF???


cat file_name | while read line
do
echo "$line"
done

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

8. "RE: Помогите с bash-ем"
Сообщение от Mark Искать по авторуВ закладки on 30-Ноя-02, 11:22  (MSK)
>cat file_name | while read line
>do
> echo "$line"
>done

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

P.S. Не непонятно, почему не добавить ключ для read (например -s), чтобы запрещать read заменять повторяющиеся пробелы одним&


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

9. "RE: Помогите с bash-ем"
Сообщение от alexc emailИскать по авторуВ закладки on 02-Дек-02, 17:21  (MSK)
>>cat file_name | while read line
>>do
>> echo "$line"
>>done
>
>команда read заменяет повторяющиеся пробелы одним пробелом, так что даже такой правильной
>конструкцией нельзя корректно прочитать строки из файла.
>
>P.S. Не непонятно, почему не добавить ключ для read (например -s), чтобы
>запрещать read заменять повторяющиеся пробелы одним&

Спасибо, это то что надо, Alexc.

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

10. "RE: Помогите с bash-ем"
Сообщение от LS emailИскать по авторуВ закладки on 02-Дек-02, 19:49  (MSK)
>>cat file_name | while read line
>>do
>> echo "$line"
>>done
>
>команда read заменяет повторяющиеся пробелы одним пробелом, так что даже такой правильной
>конструкцией нельзя корректно прочитать строки из файла.
>
>P.S. Не непонятно, почему не добавить ключ для read (например -s), чтобы
>запрещать read заменять повторяющиеся пробелы одним&

потому что read этого и так не делает - он всего лишь отбрасывает ненужные символы-разделители, выделяя из строки "слова". разделители ведь к самому "слову" никак не относятся - вот он их и удаляет. в том примере, что я написал, в качестве "слова" выступает вся строка, так что внутри нее никаких изменений не произойдет, но ведущие и концевые пробелы действительно будут отброшены. однако для анализа самого содержимого прочитанной строки, это все равно (как правило) ничего не значит.

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


Удалить

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




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

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