Показать полную графическую версию : Shell. Чтение текстового файла по строкам.
Delphin911
07-04-2005, 10:25
Подскажите как можно прочитать текстовый файл по строкам и в зависимости от значения строки, делать с ней разные вещи. Ну например, кидать в другой файл, присваивать значение строки переменной ит.д.
#!/bin/bash
cat file_name | while read str; do
if [ "$str" = "1"]; then
....
elif [ "$str" = "bla-bla" ]; then
....
fi
done
Delphin911
07-04-2005, 12:34
Чей-то не работает
cat /remote/ad/test | while read bb; do if [[ "$bb" == "dn:" ]] ; then echo 11; else echo $bb; fi; done
так вот он ерту dn: никогда не находит, хотя половина строк начинается на dn:,
и всегда выдает строку.
== - нефига не поиск образца...
как вариант:
cat /remote/ad/test | while read bb; do if [ `echo $str | grep dn:` ] ; then echo 11; else echo $bb; fi; done
Delphin911
07-04-2005, 13:23
О! Заработало! Токмо скобки двойные, но енто наверно приблуда bash-а.
Delphin911
07-04-2005, 15:21
А как сделать, чтобы она к строковой переменной добавляла другую строковую переменну.
Типа если да, то Х=$Y иначе X=$X+";"+$Y. Т.е. это так хочется, но не получается.
Delphin911
07-04-2005, 16:00
Интересно. Когда я в консоли напрямую делаю
x=12345
y=67890
z=$x$y
echo $z дает 1234567890
а когда в скрипте, то вторая переменная пишется поверх первой.
Delphin911
07-04-2005, 16:20
Короче в файле есть строки типа dn: ........... и m: ........... А я хочу, чтобы эти строки выдавались в одну строку, скажем через ";" а dn: и m: убиралось.
#!/usr/bin/bash
cat /remote/ad/test | while read b
do
x=${b#*: }
if [[ `echo $b | grep dn:` ]]
then
echo $c
c=$x
else
c=$x";"$c
fi
done
И все бы хорошо но получается вот что
скажем x=1111111111 , c=222
а в итоге вместо 1111111111;222 мы получаем ;222111111
Delphin911
07-04-2005, 17:58
Это я ужо пробовал. Не помогает.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.