URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5000
[ Назад ]

Исходное сообщение
"Чтение файла"

Отправлено BerkutST , 04-Янв-06 13:37 
Мне надо прочитать файл и использовать данные в скрипте, нашел такой код

cat config.txt| grep -v '^ *#'| while read param1 param2; do                    
        echo "$param1 - $param2"
done

Но как я понял полученные переменные не могут использоваться вне while?
Какие есть варианты чтобы читать файл, присваивать полученные данные переменной и использовать потом в любом месте скрипта?


Содержание

Сообщения в этом обсуждении
"Чтение файла"
Отправлено madskull , 10-Янв-06 15:49 
>Мне надо прочитать файл и использовать данные в скрипте, нашел такой код
>
>
>cat config.txt| grep -v '^ *#'| while read param1 param2; do
>        echo "$param1 - $param2"
>
>done
>
>Но как я понял полученные переменные не могут использоваться вне while?
>Какие есть варианты чтобы читать файл, присваивать полученные данные переменной и использовать
>потом в любом месте скрипта?

Например, так:
while read param1 param2; do
  ...
done < <(cat config.txt| grep -v '^ *#')


"Чтение файла"
Отправлено BsDr , 26-Янв-06 12:34 
Помогите, пожалуйста!
Я не могу прочитать строку йз файла, а очень хочется.
Кто-нибудь может внятно написать чтение одной строки из файла.
Ковыряние в вышейзложенном коде дало одно расстройство.
Интерпритатор - cshell.
Спасибо!

"Чтение файла"
Отправлено chip , 26-Янв-06 15:06 
>Помогите, пожалуйста!
>Я не могу прочитать строку йз файла, а очень хочется.
>Кто-нибудь может внятно написать чтение одной строки из файла.
>Ковыряние в вышейзложенном коде дало одно расстройство.
>Интерпритатор - cshell.
>Спасибо!

cat /path/to/file | sed -ne 'Np'
cat /path/to/file | head -N | tail -1

, где N - номер строки.

"Упрощенный" вариант:
sed -ne 'Np' /path/to/file
head -N /path/to/file | tail -1


"Чтение файла"
Отправлено BsDr , 27-Янв-06 13:02 
Спасибо, все заработало!

"Чтение файла"
Отправлено StarshiY , 27-Янв-06 23:51 
>>Помогите, пожалуйста!
>>Я не могу прочитать строку йз файла, а очень хочется.
>>Кто-нибудь может внятно написать чтение одной строки из файла.
>>Ковыряние в вышейзложенном коде дало одно расстройство.
>>Интерпритатор - cshell.
>>Спасибо!
>
>cat /path/to/file | sed -ne 'Np'
>cat /path/to/file | head -N | tail -1
>
>, где N - номер строки.
>
>"Упрощенный" вариант:
>sed -ne 'Np' /path/to/file
>head -N /path/to/file | tail -1

Довольно практично, но у меня немного дугая задача. Скажите, как быть если нужно прочитать из файлика все строчки и каждую отдельно обработать. Можно ли это сделтаь на сшеле ?
В принципе я сейчас опишу проблему подробней. Мне например нужно обработаь файлик base.dat в котором примерно следующее содержание
---
192.168.0.12~2006.1.26-11:41~0~2006.1.26-12:41~~матерился матом~2006.01.26-11:41~ftp://kompik/sad01.jpg~
192.168.0.13~2006.1.26-11:41~0~2006.1.26-12:41~~тоже вел себя не прилично~~2006.01.26-11:42~ftp://kompik/sad01.jpg~
----
напримре утиликтками cat и cut я могу вывести те поля которые меня интересуют, но они выводятся в несколько строк сразу. т.е. я могу вывести поля ИП дату1, дату2. А дальше как с ними работать ? т.к. можно-ли в шеле работать с масивом ? если да то как ? или можно решить этот вопрос по другому средствами сшела ? В принципе меня интересует как можно читать из файла и писать в него, ток не потоком (все в подряд), а то, что меня интересует. Прошу прощения может я написал немного сумбурно. Да, ОС FreeBSD 4.11 использую /bin/sh


"Чтение файла"
Отправлено chip , 30-Янв-06 13:09 
>напримре утиликтками cat и cut я могу вывести те поля которые меня
>интересуют, но они выводятся в несколько строк сразу. т.е. я могу
>вывести поля ИП дату1, дату2. А дальше как с ними работать
>? т.к. можно-ли в шеле работать с масивом ? если да
>то как ? или можно решить этот вопрос по другому средствами
>сшела ?

man awk
man sed