18.7.7. Одновременный просмотр двух записей
18.7.7. Одновременный просмотр двух записей
В некоторых случаях возникает необходимость в одновременной обработке двух записей, например, если нужно сравнить различные поля двух записей. Чтобы просматривать одновременно по две записи, достаточно после первой конструкции "while read" поместить оператор "do" с другим оператором "read". Применяя эту методику, следует помнить, что количество записей для просмотра составляет четное число. Не забывайте проверять число просматриваемых записей!
Ниже приводится файл, содержащий шесть записей: record1, record2 и т. д.
$ pg record.txt
record 1
record 2
record 3
record 4
record 5
record 6
В этом примере одновременно просматривается по две записи. Никакой проверки записей в примере не производится.
Ниже приводится соответствующий сценарий.
$ pg readpair
#!/bin/sh
#readpair
#первая запись
while read rec1 do
#вторая запись
read rec2
#выполняется дальнейшая обработка/тестирование для тестирования или
#сравнения обеих записей
echo "This ls record one of a pair :$rec1"
echo "This ls record two of a pair :$rec2"
done < record.txt
С помощью команды wc сначала проверим, что было выполнено четное число записей.
$ cat record.txt | wc -l
б
Имеется шесть записей, поэтому приступим к их обработке.
$ readpair
This ls record one of a pair :record 1
This ls record two of a pair :record 2
This ls record one of a pair :record 3
This ls record two of a pair :record 4
This ls record one of a pair :record 5
This ls record two of a pair :record 6