![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
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 |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Файл преобразования и 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
|
|
||||
|
Цитата:
ура, Devaraj Takhellambam |
|
||||
|
Привет,
Это ожидаемые результаты. Ожидаемый результат \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 |
|
||||
|
Благодаря 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 |
|
||||
|
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
Код:
awk -F'~' '{OFS="~"}{arr[$1OFS$5OFS$6]+=$4} END
{for (i in arr) {print i,arr[i]}}'<TEMPFILE>EXPECTEDFILE
эти два шага в одну. Ура, gehlnar |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|