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

Исходное сообщение
"Шелл и текстовые файлы"

Отправлено A.Shikoff , 14-Ноя-03 16:31 
Привет!

Как в шелле (sh) в цикле прочитать текстовый файл по строкам?

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

Всем спасибо.


Содержание

Сообщения в этом обсуждении
"Шелл и текстовые файлы"
Отправлено qq , 14-Ноя-03 23:01 
>Привет!
>
>Как в шелле (sh) в цикле прочитать текстовый файл по строкам?
>
>Суть задачи состоит в том, чтобы получить очередную строку из файла,
>что-то с ней сделать и вывести на stdout.
>
>Всем спасибо.

for i in `cat /etc/passwd`;do echo $i|sed 's/^/===/g';done


"Шелл и текстовые файлы"
Отправлено A.Shikoff , 15-Ноя-03 13:04 
>>Привет!
>>
>>Как в шелле (sh) в цикле прочитать текстовый файл по строкам?
>>
>>Суть задачи состоит в том, чтобы получить очередную строку из файла,
>>что-то с ней сделать и вывести на stdout.
>>
>>Всем спасибо.
>
> for i in `cat /etc/passwd`;do echo $i|sed 's/^/===/g';done

Не-а. Так я уже пробовал. Так работает только тогда, когда строки не содержат пробелов.

Еще варианты?


"Шелл и текстовые файлы"
Отправлено qq , 15-Ноя-03 18:33 
>>>Привет!
>>>
>>>Как в шелле (sh) в цикле прочитать текстовый файл по строкам?
>>>
>>>Суть задачи состоит в том, чтобы получить очередную строку из файла,
>>>что-то с ней сделать и вывести на stdout.
>>>
>>>Всем спасибо.
>>
>> for i in `cat /etc/passwd`;do echo $i|sed 's/^/===/g';done
>
>Не-а. Так я уже пробовал. Так работает только тогда, когда строки не
>содержат пробелов.
>
>Еще варианты?

$ cat txtfile
test test
124 1241234 1234
sdfablksfd asdf asdk

$ IFS="\n" ; for i in `cat txtfile`;do echo $i|sed 's/^/===/g';done
===test test
===124 1241234 1234
===sdfablksfd asdf asdk


"Шелл и текстовые файлы"
Отправлено qq , 09-Сен-04 21:21 
>>>>Привет!
>>>>
>>>>Как в шелле (sh) в цикле прочитать текстовый файл по строкам?
>>>>
>>>>Суть задачи состоит в том, чтобы получить очередную строку из файла,
>>>>что-то с ней сделать и вывести на stdout.
>>>>
>>>>Всем спасибо.
>>>
>>> for i in `cat /etc/passwd`;do echo $i|sed 's/^/===/g';done
>>
>>Не-а. Так я уже пробовал. Так работает только тогда, когда строки не
>>содержат пробелов.
>>
>>Еще варианты?
>
>$ cat txtfile
>test test
>124 1241234 1234
>sdfablksfd asdf asdk
>
>$ IFS="\n" ; for i in `cat txtfile`;do echo $i|sed 's/^/===/g';done
>===test test
>===124 1241234 1234
>===sdfablksfd asdf asdk

тут ошибка.
IFS надо задавать так:
IFS=$'\n'
тогда она будет содержать newline. а в коде выше - она устанавливается в 'n'



"Шелл и текстовые файлы"
Отправлено vnp , 16-Ноя-03 00:38 
>Привет!
>
>Как в шелле (sh) в цикле прочитать текстовый файл по строкам?
>
>Суть задачи состоит в том, чтобы получить очередную строку из файла,
>что-то с ней сделать и вывести на stdout.

while read line; do
    process $line
done

>Всем спасибо.