The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

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



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

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Файл преобразования gehlnar Shell программирование и сценарии 4 04-17-2009 07:47 AM
Файл Конверсии sridhar_423 Shell программирование и сценарии 2 03-16-2009 04:47 PM
Файл преобразования в ASCII Мора UNIX перспективных И опытных пользователей 4 03-31-2008 12:29 PM
Конверсия утилиты XHTML файла Postscript файл dattatray.b SUN Solaris 0 08-25-2005 06:36 AM
файл преобразования hipo UNIX для чайников Вопросы И Ответы 1 07-24-2001 09:24 PM

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 04-23-2009
gehlnar gehlnar is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Сообщений: 47
Файл преобразования и AWK

Привет Всем,
Я путать с выходом входной файл, и я использую ниже команду в сценарий, чтобы получить ожидаемые результаты.
Также я хочу добавить еще одно условие, используя логическое "И" (И И) вместо $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) как $ 2 \u003d\u003d "L" И И $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) но я получаю примерно AWK ошибка.
Может ли кто-нибудь, пожалуйста, сообщите об этом, пожалуйста?

Код:
 
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File 
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Old 04-23-2009
devtakh devtakh is offline
Зарегистрированный пользователь
  
 

Регистрация: Oct 2007
Место проведения: Бангалор
Сообщений: 514
Цитата:
Первоначально Послано gehlnar View Post
Привет Всем,
Я путать с выходом входной файл, и я использую ниже команду в сценарий, чтобы получить ожидаемые результаты.
Также я хочу добавить еще одно условие, используя логическое "И" (И И) вместо $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) как $ 2 \u003d\u003d "L" И И $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) но я получаю примерно AWK ошибка.
Может ли кто-нибудь, пожалуйста, сообщите об этом, пожалуйста?

Код:
 
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File 
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Вы можете предоставить образец ожидаемого выхода здесь? Из Вашего сообщения не ясно, что вы пытаетесь достичь.


ура,
Devaraj Takhellambam
Old 04-23-2009
gehlnar gehlnar is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Сообщений: 47
Привет,

Это ожидаемые результаты.

Ожидаемый результат
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
PLPKO0000016 PKO SA ~ ~ ~ SHS 20000
PL0000101937 ~ ~ DS1110 FMT ~ 100000
PLKGHM000017 ~ ~ KGHM SHS ~ 10000

Но если вы увидите мое исходное сообщение Я получаю это, но вместе с другими записями. Пожалуйста, дайте мне знать, если у вас есть дополнительные запросы по этому поводу.

Ура,
gehlnar


Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Модератор
  
 

Регистрация: Февраль 2005
Место: Boston, MA
Сообщения: 5122
Вы действительно не нужно 'кот', 'grep "и т.д. ... - AWK может делать все сама.

nawk-F geh.awk MyFile

geh.awk:
Код:
BEGIN {
  FS="|"
  OFS="~"
}
!/^PL/ { next }
$2=="L" && $3=="L" {$4=0-$4}
{
  $6=($6=="COM")?"SHS":"FMT"
  arr[$1 OFS $5 OFS $6]+=$4
}
END {
  for (i in arr)
    print i,arr[i]
}
Но я не получаю ваших ожидаемых результатов, хотя я пытался следовать вашим кодом.
Old 04-23-2009
gehlnar gehlnar is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Сообщений: 47
Благодаря Vgersh я правильный код, как на вашей рекомендации.

Я получения ожидаемых результатов, если я использую AWK операции дважды т.е. хранить до выхода массива операция
и на новый файл, если я использую массив операции я получаю правильный вывод.

Но, как я использую AWK дважды, я думала о его сочетания. У нас-то вроде трубы в AWK?


Поэтому он будет, как первый получить этот файл ..

Код:
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
, а затем выполнить операцию массив из расчета на этом, но мой запрос, не могут это сделать с помощью одного AWK операции.
Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Модератор
  
 

Регистрация: Февраль 2005
Место: Boston, MA
Сообщения: 5122
Я не вполне следовать, что вы делаете - Прости.
Можете ли вы отправить шаги и модифицированный код, пожалуйста?
Old 04-23-2009
gehlnar gehlnar is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Сообщений: 47
vgersh,

Шаг 1: исходный файл преобразования для расчета базового
Код:
cat INPUTFILE |tr -d '\015'|sort -k1,2|nawk -F'|' 
'BEGIN {OFS="~"}!/^PL/{next}$2=="L" && $3=="L"
{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT"{print $0}'>TEMPFILE
Шаг 2: Фактический расчет для получения ожидаемых результатов, используя выше вывод о временном
Код:
 awk -F'~' '{OFS="~"}{arr[$1OFS$5OFS$6]+=$4} END 
  {for (i in arr) {print i,arr[i]}}'<TEMPFILE>EXPECTEDFILE
Я использую два вышеупомянутых шагов в сценарий, надеюсь, вы получили некоторое представление из него, и моя идея состояла в том, чтобы объединить
эти два шага в одну.

Ура,
gehlnar
Closed Thread

Закладки

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

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

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

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




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