LINUX.ORG.RU
ФорумAdmin

Bash - чтение строк из файла

 ,


2

2

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

вот так:

while read line; do
  echo "[$line]";
done < ./host_list

читает все подряд (и пустые строки и комментарии)

Подскажите пожалуйста как сделать??


if echo $line | grep -v .... ; then
else
fi

Так отсекать пустые строки и комментарии

И т.д.

svu ★★★★★
()

очевидно добавить в цикл что-то вроде

[ -z "$line" ] && continue
[ "${line::1}" == "#" ] && continue

в самом начале цикла.

emulek
()

pron!!!

[ megabaks@desktop ] ~ $ cat test_lor_file 
test

for

LOR
[ megabaks@desktop ] ~ $ while read line;do echo \'"${line}"\';done <<< "$( grep -v -e "^$" -e "^#" test_lor_file )"
'test'
'for'
'LOR'
[ megabaks@desktop ] ~ $

megabaks ★★★★
()
Ответ на: комментарий от anonymous

Пустые строки бывают с пробелами, перед коментарием может быть любое количество пробелов, табов

egrep -v '^\s*(#|$)' /etc/nginx/nginx.conf

ihanick
()
Ответ на: комментарий от ihanick

Ещё бывают другие символы начала комментария, те ; //, или многострочные комментарии навроде /* ... */.

anonymous
()
Ответ на: комментарий от anonymous

в приличном обществе бьют сапогом по морде

в приличном обществе не бьют сапогом по морде

teod0r ★★★★★
()
Ответ на: комментарий от AS

тогда уж проще заюзать «perl -lane '<>'»

Deleted
()

А если сделать например так:

while read line; do
  tmp=${line##*/}
  tmp=${tmp%%*/}
  tmp=${tmp###*}
  if [ "$tmp" !=  "" ]
  then
    echo "[$tmp]";
  fi
done < ./host_list

Насколько правилен и оптимален этот код??

KLfer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.