сравнение значений из текстового файла
Модератор: Bizdelnick
-
- Сообщения: 103
сравнение значений из текстового файла
Подскажите пж-та, никак не могу сообразить - есть текстовый файл, который содержит числовые значения в 2 столбцах, например:
5 17
3 12
8 11
Необходимо прочитать данные из файла, сравнить 2 значения в каждой строке и вывести, какое значение больше. Никак не могу понять, как это сделать
5 17
3 12
8 11
Необходимо прочитать данные из файла, сравнить 2 значения в каждой строке и вывести, какое значение больше. Никак не могу понять, как это сделать
Re: сравнение значений из текстового файла
Код: Выделить всё
awk '{print ($1>$2)?$1:$2}' file
Добавлено (15:25):
Код: Выделить всё
awk '{$0=($1>$2)?$1:$2}1' file
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: сравнение значений из текстового файла
Код: Выделить всё
#/bin/bash
while read a b; do
if [ "$a" -ge "$b" ]; then
echo $a
else
echo $b
fi
done <file.txt
Re: сравнение значений из текстового файла
Hephaestus, здесь тоже можно применить тернарный оператор,
...
Код: Выделить всё
while read a b; do
echo $(( b<a ? a : b ))
done <file
Добавлено (15:56):
Можно проверку в цикле на всякий случай добавитьКод: Выделить всё
while read a b; do
[[ "$a$b" =~ [^0-9] ]] && continue
-
- Сообщения: 103
Re: сравнение значений из текстового файла
Подскажите еще пожалуйста, пытаюсь теперь учесть, если значения совпадают в столбцах, но не срабатывает, слово "совпадение" выводится в любом случае, причем при каждом выполнении шага цикла
В результате выводится:
1
7
4
совпадение
совпадение
совпадение
совпадение
Вот содержимое файла:
0 1
5 7
3 4
Код: Выделить всё
while read a b; do
if [[ "$a" = "$b" ]]; then
echo "совпадение"
else
echo $b
fi
done <file
1
7
4
совпадение
совпадение
совпадение
совпадение
Вот содержимое файла:
0 1
5 7
3 4
Последний раз редактировалось Bizdelnick 26.02.2020 12:53, всего редактировалось 1 раз.
Причина: тег code
Причина: тег code
- Bizdelnick
- Модератор
- Сообщения: 20794
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: сравнение значений из текстового файла
У меня не выводится. Ни в bash, ни в ksh, ни в zsh. dash предсказуемо ругается на отсутствие команды [[.safronowmax писал(а): ↑26.02.2020 12:17слово "совпадение" выводится в любом случае, причем при каждом выполнении шага цикла
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- /dev/random
- Администратор
- Сообщения: 5289
- ОС: Gentoo
Re: сравнение значений из текстового файла
safronowmax
У вас, похоже, 4 пустые строки в конце файла.
У вас, похоже, 4 пустые строки в конце файла.
Re: сравнение значений из текстового файла
В двойных скобочках необходимо ==
- /dev/random
- Администратор
- Сообщения: 5289
- ОС: Gentoo
Re: сравнение значений из текстового файла
man bash писал(а): [[ expression ]][...] The = operator is equivalent to ==. [...]
Спасибо сказали:
Re: сравнение значений из текстового файла
Перепишем проверку в начале цикла
Код: Выделить всё
[ ${b//[^0-9]} ] || continue
Добавлено (16:03):
Код: Выделить всё
awk '
/^\s*$/ {next} #!NF {next}
$1 > $2 {print $1}
$1 < $2 {print $2}
$1 == $2 {print "совпадение"}
' file