Сценарий, Unix, сравнить - PullRequest
0 голосов
/ 13 октября 2009

у меня есть два файла ...

file1:

002009092312291100098420090922111
010555101070002956200453T+00001190.81+00001295.920010.87P
010555101070002956200449J+00003128.85+00003693.90+00003128
010555101070002956200176H+00000281.14+00000300.32+00000281

file2:

002009092410521000098420090709111
010560458520002547500432M+00001822.88+00001592.96+00001822
010560458520002547500432D+00000106.68+00000114.77+00000106

в обоих файлах в каждой записи, начинающейся с 01 .... строка от 3-го символа до 25-го символа ... т.е. до алфавита является ключом ... на основе этого ключа .. мне нужно сравнить два файла ..... и если в файле 2 есть какая-либо запись, соответствующая ... то мне нужно заменить эту запись в file1 ... или добавить его, если он не совпадает ....

помогите как можно скорее

Ответы [ 2 ]

1 голос
/ 13 октября 2009

Ну, это довольно неопределенный (и основной) вопрос программирования. Мы сможем помочь нам, если вы точно объясните, что вы сделали и где застряли.

Кроме того, это выглядит как домашнее задание, и люди опасаются слишком много помогать с домашними проблемами, как это может показаться обманом.

Для начала:

  • Я бы порекомендовал Perl для решения этой проблемы, но подойдет и awk или другой язык сценариев. Я бы порекомендовал против sh / bash, так как они слабо работают с текстом; также объединение grep и др. станет довольно громоздким.
  • Сначала напишите программу на Perl, которая фильтрует записи, начиная с 01. Затем извлеките ключ и поместите его в хеш (структура Perl). Затем выведите новый объединенный файл, как требуется.

Не стесняйтесь редактировать свой вопрос, если у вас все еще есть проблемы.

0 голосов
/ 14 октября 2009

Используя awk, вы получаете поля от 3 до 25, но делаете что-то вроде awk -F "" '/^01/{print $1}' file_name | cut -c 3-25 и сопоставьте первые два поля с 01 из обоих файлов и получите все строки в двух разных буферах и сравните оба буфера, используя for line in в скрипте оболочки. во втором буфере в файле ist и замените строку в файле ist строкой в ​​second.this, кажется, домашняя работа. и вам нужно немного поработать над логикой.

...