2016-11-22 8 views
0

у меня есть 1 имя файла file1.txtсравнивать файлы в сценарии оболочки и дельта

кошка file1.txt

| 6|  10| 
| 7|  20| 
| 8|  41| 
| 10|  40| 
| 11|  40| 
| 12|  50| 
| 13|  70| 
| 15|  80| 

кошки file2.txt:

| 6|  10| 
| 7|  30| 
| 8|  81| 
| 10|  90| 
| 11|  60| 
| 12|   0| 
| 13|  70| 
| 15|  80| 

Я должен сравнить эти 2 и каждый столбец I для получения информации как дельта в обоих файлах для значений не должен превышать 5, например: для файла 1: 6 | 10, для файла2 6 | 10, , но для следующего значения 7 | 20 в файле 1 и для файла 2 это 7| 30,

Итак, моя цель - найти разницу между этими двумя файлами, и если delta будет более высоким результатом печати.

Может ли кто-нибудь мне помочь в этом.

+0

Используйте 'awk'. При чтении первого файла создайте массив, ключи которого являются столбцом 1, а значения - это столбец 2. При чтении второго файла сравните столбец 2 со значением в массиве и сообщите, слишком ли дельта слишком велика. – Barmar

ответ

1

Я не совсем понимаю, что вы подразумеваете под «выше», но здесь это хорошая отправная точка

join file1.txt file2.txt -j 2 -t "|" | sed -e 's/|//g' | awk '{print $1,$2,$3,$2-$3}' 

6 10 10 0 
7 20 30 -10 
8 41 81 -40 
10 40 90 -50 
11 40 60 -20 
12 50 0 50 
13 70 70 0 
15 80 80 0 

В принципе, я слил 2 файлов с помощью ключа в первом столбце, а затем сделать некоторую обработку на end с awk. Сообщите нам, что вы хотите, с окончательными данными, чтобы мы могли помочь.

+0

Большое спасибо, Он дает ошибку: не может читать «1»: нет такой переменной при выполнении «join file1.txt file2.txt -j 2 -t« | »| sed -e '/ | // g '| awk' {print $ 1, $ 2- $ 3} '" (файл" ./temp2 "строка 2) –

+0

, которые присоединяются к /usr/bin/join –

+0

Что именно: join file1.txt file2.txt -j 2 -t "|" дать вам? – NinjaGaiden