Как подключить в цикл 2й файл и писать его в $file2 построчно?while read file1
do
echo $file1
echo $file2
done <file1.txt
> Как подключить в цикл 2й файл и писать его в $file2 построчно?
> while read file1
> do
> echo $file1
> echo $file2
> done <file1.txtГм... Что-то не осилил я ваш поток сознания. :-)
Может, переведете на обычный русский или хотя бы приведете условия
поставленной перед вами задачи? Что вам нужно: считывать данные из двух
файлов одновременно или читать из одного файла и писать в другой?
Напрямую насколько я знаю, читать из одного цикла нельзя, поэтому если включить воображения то эту задачу можно решить например так:#!/bin/sh
file_one="1"
file_two="2"
count=1file_one_len=`wc -l $file_one|awk '{print $1}'`
file_two_len=`wc -l $file_two|awk '{print $1}'`while [ $file_one_len -gt 0 ] || [ $file_two_len -gt 0 ]
do
str_one=`head -$count $file_one|tail -1`
str_two=`head -$count $file_two|tail -1`
count=$(($count + 1))
file_one_len=$(($file_one_len - 1))
file_two_len=$(($file_two_len - 1))printf "$str_one|$str_two\n"
done
Спасибо за ответы, вариант mrRadio работает. Может есть более простой метод.. необходимо использовать IFSУсловие следующее,
Есть два файла domains.txt и passwd.txt
Содержание файла domains.txt
domain1.com
domain2.com
...
Содержание файла passwd.txt
sdfmw:sdmw8:sdksja
adsf2:wdggs:wsdsfa
...Задача, вывести построчно файл domains.txt и вывести потрочно из файла passwd.txt поля 1 2 3 (разделены двоеточием, каждому полю должна быть присвоена переменная - реализуется IFS)
Количество проходов цикла равно строкам у domains.txt
Пример что должно получится:domain1.com
sdfmw
sdmw8
sdksja
domain2.com
adsf2
wdggs
wsdsfa
..То что есть у меня:)
while read domains
do
echo $domains
done <domains.txtIFS=:
while read a b c
do
echo $a
echo $b
echo $c
done <passwd.txtСпасибо.
>Пример что должно получится:
>
>domain1.com
>sdfmw
>sdmw8
>sdksja
>domain2.com
>adsf2
>wdggs
>wsdsfa
$ cat domains.txt
domain1.com
domain2.com$ cat passwd.txt
sdfmw:sdmw8:sdksja
adsf2:wdggs:wsdsfa$ for ((i=1; i<=$(cat domains.txt | wc -l); i++)); do sed -n "${i}p" domains.txt; sed -n "${i}p" passwd.txt | tr ":" "\n"; done
domain1.com
sdfmw
sdmw8
sdksja
domain2.com
adsf2
wdggs
wsdsfa
Спасибо. С IFS не получится сделать? Нужно иметь доступ к переменным a b c..
> Спасибо. С IFS не получится сделать? Нужно иметь доступ к переменным a
> b c..И без алгебры... в смысле, IFS, можно. :-)
$ for ((i=1; i<=$(cat domains.txt | wc -l); i++)); do sed -n "${i}p" domains.txt; sed -n "${i}p" passwd.txt | tr ":" " " > tmpfile; read a b c < tmpfile; echo -e "${a}\n${b}\n${c}"; done; rm tmpfile
domain1.com
sdfmw
sdmw8
sdksja
domain2.com
adsf2
wdggs
wsdsfa
Вот-с, по-нашему, по-неученому... (с)
Понятно, спасибо! и последний вопрос на сегодня..)
Условие следующее,
Есть два файла domains.txt и passwd.txt
Содержание файла domains.txt
domain1.com
domain2.com
...
Содержание файла passwd.txt
sdfmw:sdmw8:sdksja
adsf2:wdggs:wsdsfa
..Как дописать последовательно строки из domains.txt в passwd.txt с разделителем ':'
Должно получиться -
sdfmw:sdmw8:sdksja:domain1.com
adsf2:wdggs:wsdsfa:domain2.com
..
>[оверквотинг удален]
> ...
> Содержание файла passwd.txt
> sdfmw:sdmw8:sdksja
> adsf2:wdggs:wsdsfa
> ..
> Как дописать последовательно строки из domains.txt в passwd.txt с разделителем ':'
> Должно получиться -
> sdfmw:sdmw8:sdksja:domain1.com
> adsf2:wdggs:wsdsfa:domain2.com
> ..Тут все намного проще:
$ paste -d ":" passwd.txt domains.txt
sdfmw:sdmw8:sdksja:domain1.com
adsf2:wdggs:wsdsfa:domain2.com
> Как подключить в цикл 2й файл и писать его в $file2 построчно?
> while read file1$ while read f1 && read f2 <&2; do echo "$f1 + $f2"; done < <(seq 1 5) 2< <(seq 15 -1 5)
1 + 15
2 + 14
3 + 13
4 + 12
5 + 11
$ _
> $ while read f1 && read f2 <&2; do echo "$f1 +
> $f2"; done < <(seq 1 5) 2< <(seq 15 -1 5)
> 1 + 15
> 2 + 14
> 3 + 13
> 4 + 12
> 5 + 11
> $ _Хороший вариант, спасибо, но как быть с текстовыми файлами..
так пишет ошибку синтаксиса -
while read f1 && read f2 <&2; do echo "$f1 + $f2"; done < <1.txt 2< <2.txt
непонятна последняя часть кода..
> так пишет ошибку синтаксиса -
> while read f1 && read f2 <&2; do echo "$f1 + $f2";
> done < <1.txt 2< <2.txtdone < 1.txt 2< 2.txt