сравнение этих двух таблиц линию за линией

Я должен сравнить один - второй столбец на двух таблицах линию за линией. Таблицы: 1.csv

1a  2
14  4g

2.csv

1a  2
1  4

Сценарий:

#!/bin/bash
text1=$(cat "1.csv" | awk '{print $2}')
text2=$(cat "2.csv" | awk '{print $2}')

if [[ "$text1" == "$text2" ]]
then
echo "true"
else
echo "false"
fi

Но я получаю только один результат - ложь.

Почему я получаю только один результат - ложь? должен быть верен (2=2) ложь (4 г! =4)

0
задан 16 October 2016 в 17:26

2 ответа

Try:

paste 1.csv 2.csv | awk '$2 == $4 {print "true"; next} {print "false"}'

Пример:

$ paste 1.csv .csv | awk '$2 == $4 {print "true"; next} {print "false"}'
true
false

Команда paste объединяет строки из предоставленных ей файлов, поэтому я получаю строку `первого файла и строку 1 из второго файла в первой строке вывода и т. Д .:

$ paste f1 f2
1a  2   1a  2
14  4g  1  4

Это позволяет напрямую сравнивать поля в awk, которые затем могут вывести желаемую строку.

Команда next в awk переходит на следующую строку без обработки дальнейших команд, поэтому мне не нужно записывать условие $2 != $4 для второго блока.

2
ответ дан 28 September 2019 в 09:38

С awk:

awk 'NR==FNR {a[NR]=$2; next}; a[FNR]==$2 {print "true"; next} \
                                            {print "false"}' f1.csv f2.csv
  • {a[NR]=$2; next} будет выполняться только для первого файла, f1.csv, массив a будет создан с ключом как номер строки и значение как соответствующее значение второго поля для записи

  • a[FNR]==$2 {print "true"; next} {print "false"} проверки, если значение от массива a для соответствующего номера строки от f2.txt будет равно, он - второе поле, раз так true еще печатается false, печатается

Пример:

% cat f1.csv 
1a  2
14  4g

% cat f2.csv                                                                                                                  
1a  2
1  4

% awk 'NR==FNR {a[NR]=$2; next}; a[FNR]==$2 {print "true"; next} {print "false"}' f1.csv f2.csv  
true
false
1
ответ дан 28 September 2019 в 09:38

Другие вопросы по тегам:

Похожие вопросы: