The UNIX and Linux Forums  

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 03-18-2008
rgentis rgentis is offline
Зарегистрированный пользователь
  
 

Регистрация: Mar 2008
Сообщений: 4
Экстракт несколько секций файла

У меня есть файл, который нужно разобрать несколько секций из файла.

Этот файл содержит несколько строк, начинающихся с 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
Old 03-18-2008
Shamrock shamrock is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Oct 2007
Место проведения: США
Сообщений: 753

Код:
awk '/^ST/,/^SE/' file

Old 03-18-2008
rgentis rgentis is offline
Зарегистрированный пользователь
  
 

Регистрация: Mar 2008
Сообщений: 4
Благодарю Вас за оперативный ответ.

Он делал то, что я хотел. Однако три секции необходимо разбираться в разных файлах.

Так вы
ST
Данные
SE
Это должно быть принято до 1 файл
ST
Данные
SE
Это должно быть принято в файл 2

ЕТЦ .....

Также я заметила, что Санкт-SE и пронумерованы.

ST * 810 * 0004
Тогда
SE * (номер) * 0004
Спасибо

Последний раз редактировалось rgentis; на 03-18-2008 08:07 PM.. Причина: Добавлена то
Old 03-18-2008
summer_cherry summer_cherry is online now Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2007
Месторасположение: Пекин Китай
Сообщения: 1097
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)
) 'Имя_файла
Old 03-18-2008
drl's Avatar
ДРЛ drl is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Apr 2007
Место проведения: Санкт-Пол, Миннесота США / BSD, CentOS, Debian, OS X, Solaris
Сообщений: 717
Привет.

Заместитель AWK решение:

Код:
#!/usr/bin/env sh

# @(#) s1       Demonstrate extraction of range to separate files.

#  ____
# /
# |   Infrastructure BEGIN

echo
set -o nounset

debug=":"
debug="echo"

## The shebang using "env" line is designed for portability. For
#  higher security, use:
#
#  #!/bin/sh -

## Use local command version for the commands in this demonstration.

set +o nounset
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version =o $(_eat $0 $1) awk my-nl
set -o nounset

# Use nawk or /usr/xpg4/bin/awk on Solaris.

echo

FILE=${1-data1}
echo " Input file $FILE:"
cat $FILE

# |   Infrastructure END
# \
#  ---

echo
echo " Results from processing:"
awk '
BEGIN   { i = 0 }
/ST/            { i++ ; name = "file" i }
/ST/,/SE/       { print > name }
' $FILE

my-nl file?

exit 0

Производство:

Код:
% ./s1

(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
GNU Awk 3.1.4
my-nl (local) 296

 Input file data1:
ST
first invoice
SE
ST
second invoice
SE
ST
third invoice
SE

 Results from processing:

==> file1 <==

  1 ST
  2 first invoice
  3 SE

==> file2 <==

  1 ST
  2 second invoice
  3 SE

==> file3 <==

  1 ST
  2 third invoice
  3 SE

Выбрать имя файла базы нужно в переменной "имя" ... Cheers, ДХО
Old 03-19-2008
faltooweb faltooweb is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2008
Сообщений: 11
Экстракт несколько секций файла

# - Использование ST ценности в качестве выходного файла.
AWK-V OUT \u003d "/ Dev / нуль"
/ ^ ST / (gsub ( "\ \ *","-",$ 0); из \u003d $ 0". TXT ")
/ ^ SE / (тесные (из))
(Printf "% S \ N", $ 0>> из)
'$ INFILE

Результат будет
ST-810-0001.txt
так далее ...

-Рамеш
Closed Thread

Закладки

Теги
Linux, Linux команд, Solaris

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 01:55 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0