LINUX.ORG.RU

Сравнение столбцов таблицы

 , ,


0

2

Добрый день. В man по diff не обнаружил следующей возможности: Пример Есть таблица 1.csv

1 5 5 5

2 6 7 5

3 7 9 9

4 8 12 12

Как можно сравнить 3 и 4 column средствами командной строки или bash скриптом? Пробовал diff совместно с | awk, но не выходит( В инете и на форумах (в том числе и на этом) есть примеры сравнения двух текстовых файлов, но не двух столбцов одной таблицы. Вывод сравнения необходимо true/false. Буду благодарен за совет или пример.

Ответ на: комментарий от anonymous

а блин, читал по диагонали: например

awk '$3 == $4'
- строки в которых равны

anonymous ()
Ответ на: комментарий от anonymous

Большое спасибо.

awk '$3 == $4' - у меня не работало, т.к. построчно они были не равны=) У меня данные столбца $4 берутся через find *** и добавляются в таблицу, а я забыл добавить sort=( А можно не выводить что равно или не равно, а задать функцией? На подобии:

cat 1.csv | awk '{print $3 $4}'

if [$3 == $4]

echo «true» >> log.txt

if [$3 !== $4]

echo «false» >> log.txt

Заранее прошу прощение за такие вопросы) Это мой второй скрипт) На курсы по bash пойду в конце месяца=)

Binster ()
Ответ на: комментарий от Binster

Нашел такое решение:

cat 1.csv | awk '{print $3 == $4}'

но выводом данной команды по моей таблице является:

1

0

1

1

Не подскажете как можно заменить 1 на текст «true», 0 на «false»?

Binster ()
Ответ на: комментарий от Binster

а задать функцией?

{if ($3 == $4) {print "true"} else {print "false"}}
ужимается в:
$0 = ($3 == $4) ? "true" : "false"

мoжно и функцией: function name([parameter, ...]) { statements }

anonymous ()
Ответ на: комментарий от anonymous

#!/bin/bash cat 1.csv | awk '{print $3 == $4}'

{if ($3 == $4) {print «true»} else {print «false»}}

Вывод:

1

0

1

1

./1.sh: строка 3: ошибка синтаксиса около неожиданной лексемы `$3'

./1.sh: строка 3: `{if ($3 == $4) {print «true»} else {print «false»}}'

Как я понимаю, я не так задаю функцию.?

Binster ()
Ответ на: комментарий от Binster

Как я понимаю, я не так задаю функцию.?

это и не функция, а замена {print $3 == $4}

anonymous ()
Ответ на: комментарий от anonymous

cat/read/readarray < 1.csv не помагает=(

{if ($3 == $4) {print «true»} else {print «false»}}

Как тогда?

Binster ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.