![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| LD: Fatal: переселения остаются против allocatable, но не для записи разделы | tdallagn | SUN Solaris | 0 | 05-21-2008 08:58 AM |
| Экстракт несколько секций файла | rgentis | UNIX перспективных И опытных пользователей | 1 | 03-18-2008 08:40 PM |
| получить несколько линий в нескольких местах в файле | Дали | Shell программирование и сценарии | 8 | 03-14-2008 03:28 PM |
| Ручка Конфигурация файла с одинаковым именем параметра в нескольких разделах | potro | Shell программирование и сценарии | 7 | 03-05-2008 11:36 AM |
| Извлечь один из файлов вида. tar.gz без Uncompressing. tar.gz файл | balireddy_77 | Shell программирование и сценарии | 2 | 07-10-2007 05:23 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Экстракт несколько секций файла
У меня есть файл, который нужно разобрать несколько секций из файла.
Этот файл содержит несколько строк, начинающихся с ST (Abunch данных) Затем этот файл содержит несколько строк, которые начинаются с SE (Abunch данных) SE * 30 * 0001 ST * 810 * 0002 Мне нужно все линии между и включая эти. Они являются счета-фактуры. Счет начинается с Санкт-линии и заканчивается с SE линии. Мне нужно разорвать все счета-фактуры на отдельные файлы. Может ли кто-нибудь, пожалуйста, помогите мне. Я знаю, Grep, SEDИли AWK можете это сделать, но не знаете как. Спасибо Вот пример: ST * 810 * 0001 BIG * 20080315 * 1220680417 ** *** SUPPLY Д.И. N1 * SF * MCLANE ВЕРХОВНОГО РАВНИННОЙ * 92 * 46120004 N1 * ST * МЖК 7-11 # 57134 * 91 * 571315 N3 * 2712 E 8TH ST N4 ОДЕССА * * * TX 79761 РЕФ * ST * 000134 ОИТ * 05 * 3 ***** 7 ***** NET 7 IT1 ** 1 * CA * CB 20.09 ** * 649251 * PI * 093 * 099299711018 UP * * * Председатель НС РА TXI * ZZ * 1.53 **** 2 CTP ** RES * 0 *** КСО * 1 PID * F **** 7-11 T-SHIRT BAG 1 / 7 BBL PO4 * 1000 IT1 ** 1 Е.А. * * ** 33,72 КБ * 834861 * PI * 093 * 012253022401 UP * * * Председатель НС РА TXI * ZZ * 2.57 **** 2 CTP ** RES * 0 *** КСО * 1 PID * F **** ЗНТ КОНКРИТ CHAMP PO4 * 1 IT1 ** 1 * Е.А. * 0.03 ** ЦБ * 192849 * PI * 093 * 000000192842 UP * * * Председатель НС РА CTP ** RES * 0 *** КСО * 1 PID * F **** СКС 711 BK 200 PO4 * 1 IT1 ** 30 * Е.А. * 2.59 ** ЦБ * 001511 * PI * 093 * 025215102776 UP * * * Председатель НС РА CTP ** RES * 0 *** КСО * 1 PID * F **** MAXELL Т-160 PLUS ВИДЕО PO4 * 1 СБТД * 18454 SAC * C * G740 *** 5300 *** 06 ******* СЕРВИС ЦТТ 4 * SE * 30 * 0001 |
|
||||
|
Код:
awk '/^ST/,/^SE/' file |
|
||||
|
Благодарю Вас за оперативный ответ.
Он делал то, что я хотел. Однако три секции необходимо разбираться в разных файлах. Так вы ST Данные SE Это должно быть принято до 1 файл ST Данные SE Это должно быть принято в файл 2 ЕТЦ ..... Также я заметила, что Санкт-SE и пронумерованы. ST * 810 * 0004 Тогда SE * (номер) * 0004 Спасибо Последний раз редактировалось rgentis; на 03-18-2008 08:07 PM.. Причина: Добавлена то |
|
||||
|
nawk 'BEGIN (N \u003d 1)
$ 0 ~ / ^ ST / F \u003d (1) $ 0 ~ / ^ SE / (счета [N] \u003d sprintf ( "% S \ N% S", счета-фактуры [N], $ 0); F \u003d 0; N \u003d N +1) ( если (F \u003d\u003d 1) Счет [N] \u003d sprintf ( "% S \ N% S", счета-фактуры [N], $ 0) ) END ( для (я в счет-фактуру) распечатать счет-фактуру [I]>> I CLOSE (I) ) 'Имя_файла |
|
||||
|
Экстракт несколько секций файла
# - Использование ST ценности в качестве выходного файла.
AWK-V OUT \u003d "/ Dev / нуль" / ^ ST / (gsub ( "\ \ *","-",$ 0); из \u003d $ 0". TXT ") / ^ SE / (тесные (из)) (Printf "% S \ N", $ 0>> из) '$ INFILE Результат будет ST-810-0001.txt так далее ... -Рамеш |
![]() |
| Закладки |
| Теги |
| Linux, Linux команд, Solaris |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|