![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Добавьте заголовок и прицепов | balzzz | UNIX для чайников Вопросы И Ответы | 2 | 01-06-2008 08:19 AM |
| Проверка заголовка и прицеп для данной строки и, если не будет найден, выход из | er_ashu | UNIX для чайников Вопросы И Ответы | 2 | 11-08-2007 09:55 AM |
| Скопируйте все файлы с печатью времени и удалять заголовки, трейлер из файла | ksrams | UNIX для чайников Вопросы И Ответы | 35 | 07-30-2007 02:15 PM |
| Граф Нет записей в файл без подсчета Header и прицепов отчеты | guiguy | Shell программирование и сценарии | 2 | 06-07-2007 12:15 PM |
| объединения двух ввода текстовых файлов | d3ck_tm | AIX | 6 | 02-28-2006 11:23 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Объединить текстовые файлы, а объединить несколько заголовков / прицеп записей в одной.
Положение:
Наша система в настоящее время выполняет работы (COBOL Программа), которая генерирует интерфейс файл для отправки в один из наших поставщиков. Поскольку эта система обрабатывает информацию для более чем 100,000 сотрудников / пенсионеров (и больше), мы хотели бы несколько нить задание на обработку-групп, с тем чтобы сократить его во время выполнения. Это работает хорошо, однако, мы столкнулись с множеством файлов интерфейса, которые должны быть объединены ранее передачи поставщику. Некоторая информация о файле: В файл имеет заголовок и прицеп записи, а также прицеп запись отношение общей величины (например, работник рассчитывать, утвержденного отчета и т.д.). Есть нет места сепараторов - это фиксированной длиной поля. Затруднительного положения в деталях: Мы хотели бы связывать файлы - это легкая часть. Что делает это трудное, что нам нужно для устранения многочисленных заголовок записи и сохранить только первый. Кроме того, нам необходимо устранить многочисленные прицеп записей, но мы должны добавить все стоимость составляет от каждого прицепа в один прицеп отчете мы будем сохранять в конце. Как вы, возможно, предполагаемые в настоящее время, я написал несколько сценариев UNIX, но отсутствие некоторых ключевых знаний, связанных с индивидуальной записи и области манипуляций в текстовый файл. В частности, я хотел бы знать, каким образом я могу определить конкретные области, когда я прочитал каждой записи - эти поля для прицепа отчеты нужно хранить переходящего Всего на. Кроме того, я хотел бы знать, каким образом я могу удалить отдельные записи. Любая помощь будет с благодарностью. |
|
||||
|
Вы не дают достаточно информации, чтобы сделать правильный сценарий
Нам необходим образец заголовка строки выборки данных линии и образец прицеп линии. |
|
||||
|
Пример файла
Цитата:
BATCH HEADER PRO 0724200808042008 01E000036841 LEAD05151948F 51498 10012007 YYY 02E000036841 ME 04161988F 10012007 01E000060640 MDGV12251951F 51498 1001200709302008YYY 02E000060640 РД 05061941M 1001200709302008 01E000025850 LDUO06081956F 51498 1001200709302008YYY 02E000025850 ED 10071937M 1001200709302008 01E029009859 DUA05021960F 51498 10012007 YYY 02E029009859 ЛД 03101989F 10012007 02E029009859 ЛД 02041997M 10012007 01E034008379 AEUA09181965F 51498 10012007 YYY 02E034008379 NE 11131991F 10012007 02E034008379 RE 01131993F 10012007 02E034008379 EE 09191959M 10012007 01E045005523 EUA02131964M 51498 10012007 YNN 01E046004280 DUA12041947M 51498 10012007 YYY 02E046004280 D 12121953F 10012007 02E046004280 KE 09211986M 10012007 01E048005119 BDUA01301961F 51498 10012007 YNN 01E055002147 LDUA10011964F 51498 10012007 YYY 02E055002147 РД 11121966M 10012007 02E055002147 ND 02131997F 10012007 02E055002147 Дж.Д. 03111992M 10012007 01E057008796 SEUA12061975F 51498 10012007 YYY BATCH ПРИЦЕПА 000001150000019908042008 Подробности на прицепе Рекорд: в 00000115 является общей стоимости (численность работников), в 00000199 является общее количество обрабатываемых записей (сотрудников и их иждивенцев). Эти два поля я нужно держать прокатки общей для всех нас объединить файлы. Подробные отчеты являются более 300 символов, в ширину (дело за то, что нам нужно сделать, но думал ли я включить его). Спасибо! |
|
||||
|
при этом: 01E000036841 является работником ID и файлы с именем <something>. DAT
Код:
ls *.dat | read header dummy
# save copies of header
head -1 $header > tmp
awk '{ if (index($0, "HEADER") > 0 || index($0, "TRAILER") >0 ) {last= $0; continue}
arr[$0]++; print $0 }
END { for (i in arr)
{
empcnt++
lc+=arr[i]
}
print empcnt, lc > "cntfile" } ' *.dat >> tmp
awk ' { rec=sprintf("%08d%08d", $1 $2)}
END { printf("BATCH TRAILER %s%s\n", rec, substr(last, length(last)-7) } ' cntfile >> tmp
mv tmp employee.dat
|
|
||||
|
привет ниже Perl может помочь вам мало
Использование: Perl a.pl NUM file1 file2 [здесь NUM указать, сколько строк будет заголовок] Код:
a: ***** line 1 line 2 1 2 3 4 5 Код:
b: ***** line 3 line 4 9 8 7 6 5 Код:
***** line 1 line 2 line 3 line 4 10 10 10 10 10 Код:
$header=shift;
undef $/;
my(@head,@body,@foot);
while($file=shift){
open FH,"<$file" or die "Can not open file $_";
my $str=<FH>;
close FH;
my @temp=split("\n",$str);
for( my $i=0;$i<$header;$i++){
push @head,$temp[$i] if ($#head<$header-1);
}
for(my $j=$header;$j<$#temp;$j++){
push @body,$temp[$j];
}
my @footer = split(" ",$temp[$#temp]);
for($k=0;$k<=$#footer;$k++){
$foot[$k]=$foot[$k]+$footer[$k];
}
}
print join "\n",@head;
print "\n",join "\n",@body;
print "\n",join " ",@foot;
|
![]() |
| Закладки |
| Теги |
| Perl, Perl сдвиг, перемещение, переход на Perl |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|