The UNIX and Linux Forums  

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Чтение и запись файла с именем файла на Парама файл. thebeginer UNIX перспективных И опытных пользователей 1 10-05-2007 05:38 PM
Разлитыми Excel-файл в Unix Soumya Dash Shell программирование и сценарии 1 09-25-2006 03:56 AM
Чтение имен файлов из файла и исполнители относительной файл из скрипта оболочки anushilrai Shell программирование и сценарии 4 03-10-2006 05:25 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 11-20-2007
deep_kol deep_kol is offline
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2007
Сообщений: 14
Как разлитые файл

Привет,
У меня есть файл, abc.txt. нравиться

abc.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Компания Код 100
2007 финансовый год
Версия PW3
Валюта USD
1 2 3 4
1 2 3 4
Б. А. Номер счета прибылей рейтинг кликов MRA январем-февралем ТК-КЛ
A 93010000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
А 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0

KOKRS EL01 RLDNR M2 RRCTY 1
Компания Код 152
2007 финансовый год
Версия PW3
Валюта GBP
1 2 3 4
1 2 3 4
Б. А. Номер счета прибылей рейтинг кликов MRA январем-февралем ТК-КЛ
A 93010000 1200 152 0 0 0
A 93010000 9999 152 -57885 -16511 -537549
KOKRS EL01 RLDNR M2 RRCTY 1
.......
..... 500 строк, как этот

Я этого файла, разлитые в разные файлы в зависимости от компании код.

пример:

abc_COMCODE_100.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Компания Код 100
2007 финансовый год
Версия PW3
Валюта USD
1 2 3 4
1 2 3 4
Б. А. Номер счета прибылей рейтинг кликов MRA январем-февралем ТК-КЛ
A 93010000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
А 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0


abc_COMCODE_152.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Компания Код 152
2007 финансовый год
Версия PW3
Валюта GBP
1 2 3 4
1 2 3 4
Б. А. Номер счета прибылей рейтинг кликов MRA январем-февралем ТК-КЛ
A 93010000 1200 152 0 0 0
A 93010000 9999 152 -57885 -16511 -537549



Просьба предложить мне, как его облили через Unix оболочки программы.

Спасибо заранее!!
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Модератор
  
 

Регистрация: Февраль 2005
Место: Boston, MA
Сообщения: 5131
nawk-F deep.awk abc.txt

deep.awk:

Код:
BEGIN {
  FS=RS=""

  prefix=substr(FILENAME, 1, index(FILENAME, ".")-1)
}
{
   root="unknown"
   for(i=1; i<=NF; i++)
      if ($i ~ "Company Code") {
         n=split($2, a, " ")
         root=a[n]
         break
      }
   out= prefix "_COMCODE_" root ".txt"
   print > out
   close(out)
}

Old 11-20-2007
drl's Avatar
ДРЛ drl is offline Forum Advisor  
Зарегистрированный пользователь
  
 

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

Командная csplit был предназначен для этого:

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

# @(#) s1       Demonstrate context split, csplit.

set -o nounset
echo

debug=":"
debug="echo"

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

echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version bash csplit

echo

# Remove debris files.
rm -f xx*

FILE=${1-data1}

csplit --keep-files -z $FILE "/Company Code/-1" {*}

echo
echo " Files created:"
ls xx*

SAMPLE=xx01
echo
echo " Sample $SAMPLE:"
cat -n $SAMPLE

exit 0

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

Код:
% ./s1

(Versions displayed with local utility "version")
GNU bash 2.05b.0
csplit (coreutils) 5.2.1

1
379
218
81

 Files created:
xx00  xx01  xx02  xx03

 Sample xx01:
     1  KOKRS EL01 RLDNR M2 RRCTY 1
     2  Company Code 100
     3  Fiscal Year 2007
     4  Version PW3
     5  Currency USD
     6  1 2 3 4
     7  1 2 3 4
     8  BA Account number Profit Ctr MRA Jan-TC Feb-TC
     9  A 93010000 1530 152 1429793
    10  A 93010000 9999 403 0 0 0
    11  A 93010000 9999 404 -142
    12  A 93010000 9999 411 0 0 0
    13  A 93010000 9999 465 214538 214538 6114330
    14  A 93010000 9999 487 0 -207918
    15  A 93010000 471 502 0 0 0
    16  A 93010000 9999 502 0 0 0
    17

Видеть Человек csplit подробнее ... Cheers, ДХО
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Модератор
  
 

Регистрация: Февраль 2005
Место: Boston, MA
Сообщения: 5131
оно должно быть GNUизд-csplit - не летать на Solaris.
Плюс для именования файлов создали не то, что ОП хотел.
Cool идея - это нравится!
Old 11-20-2007
drl's Avatar
ДРЛ drl is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Apr 2007
Место проведения: Санкт-Пол, Миннесота США / BSD, CentOS, Debian, OS X, Solaris
Сообщений: 717
Привет, vgersh99.
Цитата:
Первоначально Послано vgersh99 View Post
оно должно быть GNUизд-csplit - не летать на Solaris.
Плюс для именования файлов создали не то, что ОП хотел.
Cool идея - это нравится!
Спасибо за руководителями мер. Да, это GNU-coreutils csplit. Я уверен, что, когда я использую Solaris, которые ежедневно csplit была в наличии. Если он не работает, то как же она не?

Я пробовал его на FreeBSD 4.11 система, и она имеет только один анемичный раскалывать с шаблон соответствия добавлен, но не csplit (и не существовать на OS X). Определенный артикль GNUуже варианты, как правило, может быть заменен одним тире вариантов.

Она будет принимать другой процесс извлечения строки, чтобы имя файла, но это хорошее упражнение для ОП ... Cheers, ДХО
Old 11-20-2007
deep_kol deep_kol is offline
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2007
Сообщений: 14
Привет друзья!
Спасибо за вашу помощь.
Я новичок в Unix. Я работаю в KSH и csh.
Сейчас youuplease может объяснить, как выполнять это.
abc.txt мое имя файла.

ДХО выглядит ваше решение будет в порядке. но я не смог выполнить его.
Old 11-20-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
наркоман
  
 

Регистрация: Январь 2007
Местоположение: Варна, България / Милан, Италия
Сообщения: 2926
Еще один:


Код:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn {
	print > fn
}
{
	prev = $0
}' abc.txt

Использование nawk на Solaris.

С некоторыми Awk реализаций (как XPG Awk по Solairs),
Вы должны быть более четко:


Код:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn != 0 {
	print > fn
}
{
	prev = $0
}' abc.txt


PS vgersh99 в префикс делает больший смысл, конечно.

Последний раз редактировалось radoulov; на 11-20-2007 06:38 PM.. Причина: PS
Closed Thread

Закладки

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

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

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

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




Часовой пояс GMT -4. Текущее время 12:03 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