2016-07-11 2 views
0

Мне нужен сценарий UNIX для следующих требований.Differneces между двумя файлами .dat с использованием сценариев unix

Входные файлы: file1.dat.$prevday, file2.dat.$today

Требование:

1) Скрипт должен иметь поля ввода, как file1_today, file2_prevday

2) Скрипт должен сравнить оба файла и дать список линии в двух выходных файлах To_be_added.txt, to_be_removed.txt

3) To be added.txt - у этого должен быть список строк, доступных в file1_today, но не в файле2_prevday.

4) To be removed.txt - это должно иметь строки списка , доступные в файле2_prevday, но не в файле1_today.

+0

Вам необходимо попробовать это самостоятельно и обратиться за помощью здесь, в случае возникновения препятствий .. вы только что отправили требование от своей задачи ... –

ответ

0

Я покажу вам, как создать, по крайней мере половину того, что вам нужно, используя несколько простых команд (научить человека ловить рыбу, и все, что ...)

Вы можете сделать это с помощью языка сценариев как perl или ruby. Если вы когда-либо хотели изучить один из этих языков, то такая программа была бы прекрасной возможностью.

Вы также можете сделать это, объединив команды.

Для начала команда unix «diff» дает вам информацию, которую вы хотите, просто не в том формате, который вы хотите. Если вы 'diff file2_prevday file1_today', тогда он будет показывать строки, которые существуют только в файле1_today с '>' спереди (ваш 'To_be_added.txt', и только в файле2_prevday 'с' < 'спереди. Я предлагаю попробовать Теперь некоторые примеры файлов

Теперь мы можем найти только те строки с Grep, которые будут искать вход только для строк, которые соответствуют, например:.

% diff file2_prevday file1_today | grep '^> ' 

Здесь мы ищем строки, которые соответствуют шаблону «^». «^» - специальный символ для grep (и сопоставимых инструментов), который соответствует началу строки.

К сожалению, это оставляет «>» в ​​начале всего нашего выхода.

Мы можем изменить линии, проходящие через трубу с помощью sed, что позволит нам выполнить поиск и заменить. Мы ищем по той же схеме и сравнить его ни с чем:

% diff file2_prevday file1_today | grep '^> ' | sed -e 's/^> //' 

Это дает нам выход для одного из наших файлов, которые можно сохранить:

% diff file2_prevday file1_today | grep '^> ' | sed -e 's/^> //' > To_be_added.txt 

Я оставлю создание другой файл до вас.

Некоторые вопросы, которые вы, вероятно, выиграют от ответа для себя:

  1. Почему нам нужен «^» в Grep и СЭД?
  2. Как я могу сделать один псевдоним, который будет запускать обе команды?
  3. Как я могу написать это как скрипт на языке, таком как perl/ruby ​​/ python?
  4. Как вы могли сгенерировать имена файлов с помощью команды date и обратных запросов?
+0

спасибо, бутон, я думаю, что смогу это исправить – Avi

Смежные вопросы