Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » [решено] Построчное чтение файла в Bash

Ответить
Настройки темы
[решено] Построчное чтение файла в Bash

Аватара для FATruden

Пользователь


Сообщения: 99
Благодарности: 7

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста как мне сделать следующее в баше:
Есть файл (file.txt) к примеру с таким содержиммым
/var/dir
/usr/lical/dir
/root/dir
...

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

Просьба ответить кодом) с увожением Александр..

-------
Не трогай то,что работает!


Отправлено: 13:50, 08-04-2010

 

Аватара для BuGfiX

Слакофил


Сообщения: 590
Благодарности: 130

Профиль | Сайт | Отправить PM | Цитировать


Не оно ?
Код: Выделить весь код
cat file.txt | while read line
do
 echo $line
done

-------
If you don`t know what to use this for, you don`t need it.

http://sergey.sereda.googlepages.com...e1_userbar.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:09, 08-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для FATruden

Пользователь


Сообщения: 99
Благодарности: 7

Профиль | Отправить PM | Цитировать


Вот! Именно эта конструкция мне и нужна только прблемма в том что я не могу разобрать как она работает??
если вы представите более подробные комментарии буду очень благодарен!

-------
Не трогай то,что работает!


Отправлено: 15:56, 08-04-2010 | #3


Аватара для BuGfiX

Слакофил


Сообщения: 590
Благодарности: 130

Профиль | Сайт | Отправить PM | Цитировать


Я не хочу отправлять в google, но все-таки советую почитать что-нибудь по bash, например вот это.
Вкратце, по-русски :
cat выводит собержимое файла, оператор while через пайп получает вывод команды cat, построчно его читает оператором read в переменную line и печатает эту переменную на экран командой echo.

-------
If you don`t know what to use this for, you don`t need it.

http://sergey.sereda.googlepages.com...e1_userbar.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:49, 08-04-2010 | #4


Аватара для FATruden

Пользователь


Сообщения: 99
Благодарности: 7

Профиль | Отправить PM | Цитировать


Нет нет я не прошу курс молодого бойца) я все это знаю просто пишу на bashe не часто а такого в практике еще не было....но за вежливость спасибо)

я просто хочу понять как данная конструкция работает!

получается что сначала первая строка записывается в переменную var1 и выводится на экране
потм вторая строка записывается в туже переменную var1 и выводится на экран
и так до конца файла?? я правельно понемаю?

-------
Не трогай то,что работает!


Отправлено: 17:55, 08-04-2010 | #5


Аватара для BuGfiX

Слакофил


Сообщения: 590
Благодарности: 130

Профиль | Сайт | Отправить PM | Цитировать


да, верно

-------
If you don`t know what to use this for, you don`t need it.

http://sergey.sereda.googlepages.com...e1_userbar.gif


Отправлено: 18:00, 08-04-2010 | #6


Аватара для FATruden

Пользователь


Сообщения: 99
Благодарности: 7

Профиль | Отправить PM | Цитировать


А если перед записью в переменную нового значения(например второй строки) мне нужно выполнить с ней некоторые операции например копирование в эту директорию или удоление то мне необходимо

cat file.txt | while read line
do
echo $line
cp /filename.txt $line
done

так можно на сколько я понемаю?

а если мне нужно выполнить с каждой строчкой разный! набор операций как быть тогда?

-------
Не трогай то,что работает!


Отправлено: 18:34, 08-04-2010 | #7


Аватара для BuGfiX

Слакофил


Сообщения: 590
Благодарности: 130

Профиль | Сайт | Отправить PM | Цитировать


Цитата FATruden:
а если мне нужно выполнить с каждой строчкой разный! набор операций как быть тогда? »
Как-то так:
Код: Выделить весь код
cat file.txt | while read dirname
do
  case $dirname in
    "/root/dir")
       f="/filename.txt"
       ;;
    "/var/dir")
       f="/filename2.txt"
      ;;
    *)
       f="/filename3.txt"
   esac
  cp -v  $f $dirname/
done

-------
If you don`t know what to use this for, you don`t need it.

http://sergey.sereda.googlepages.com...e1_userbar.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:01, 08-04-2010 | #8


Аватара для FATruden

Пользователь


Сообщения: 99
Благодарности: 7

Профиль | Отправить PM | Цитировать


Спасибо большое BuGfiX, теперь разобрался)

Тема закрыта.

-------
Не трогай то,что работает!


Отправлено: 21:22, 08-04-2010 | #9


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата BuGfiX:
cat file.txt | while read dirname
do
case $dirname in
"/root/dir")
f="/filename.txt"
;;
"/var/dir")
f="/filename2.txt"
;;
*)
f="/filename3.txt"
esac
cp -v $f $dirname/
done
»
Код работает, но... после прочтения всего файла, продолжается считывание уже пустых (несуществующих) строк.
Это у меня только такое?

Отправлено: 12:21, 28-09-2012 | #10



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » [решено] Построчное чтение файла в Bash

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42
[решено] Чтение текстового файла с неизвестным именем ZeroCrash AutoIt 4 01-07-2009 19:03
[решено] Чтение-запись битого файла vit777 Видео и аудио: обработка и кодирование 3 19-12-2007 09:45
Shell. Чтение текстового файла по строкам. Delphin911 Общий по Linux 11 07-04-2005 17:58
Запись/чтение в/из файла по строчно + удаление элементов... Georgiy Вебмастеру 5 18-07-2004 14:40




 
Переход