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

Исходное сообщение
"построчное чтение из файла"

Отправлено Zaltic , 01-Мрт-11 12:59 
Проблема в следующем
для построчной обработки теста использую данную конструкцию:

while read LINE
do
          . . .
          echo "$LINE"
done < $inputfile

входной файл имеет определенное форматирование, т.е. есть различные отступы в виде пробелов,
как оказалось read проглатывает начальные пробелы, как это обойти, чтобы сохранить форматирование?


Содержание

Сообщения в этом обсуждении
"построчное чтение из файла"
Отправлено phpcoder , 01-Мрт-11 13:03 
> как оказалось read проглатывает начальные пробелы, как это обойти, чтобы сохранить форматирование?

read использует значение $IFS для разбиения строки на части. Попробуйте с ней поиграться и поизменять её. Например, как-нибудь так:

while IFS="\n" read LINE



"построчное чтение из файла"
Отправлено Zaltic , 01-Мрт-11 13:28 
>> как оказалось read проглатывает начальные пробелы, как это обойти, чтобы сохранить форматирование?
> read использует значение $IFS для разбиения строки на части. Попробуйте с ней
> поиграться и поизменять её. Например, как-нибудь так:
> while IFS="\n" read LINE

Благодарю, помогло!


"построчное чтение из файла"
Отправлено Andrey Mitrofanov , 01-Мрт-11 13:08 
> как оказалось read проглатывает начальные пробелы, как это обойти, чтобы сохранить форматирование?

У меня на баше, например, вот так получилось:

$ read str <<< "  x  "; echo "-$str-"
-x-
$ IFS="" read str <<< "  x  "; echo "-$str-"
-  x  -
$ IFS= read str <<< "  x  "; echo "-$str-"
-  x  -
$ _


"построчное чтение из файла"
Отправлено pavlinux , 03-Мрт-11 02:03 
>  как это обойти, чтобы сохранить форматирование?


#!/bin/bash

IFS=$'\n'

while read LINE
do
          . . .
          echo "$LINE"
done < $inputfile