The UNIX and Linux Forums  

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



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

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Добавление столбцов двух файлов chandra321 Shell программирование и сценарии 7 05-06-2009 01:11 PM
Сравнивая аналогичные колонки в двух разных файлах ragavhere Shell программирование и сценарии 13 04-16-2008 09:53 AM
Сравнение общей колонки таблицы, в двух файлах ragavhere SUN Solaris 1 04-11-2008 09:41 AM
Сравнивая столбцы из двух файлов ggopal Shell программирование и сценарии 4 02-21-2007 08:06 PM
Сравнивая столбцы из двух файлов ggopal UNIX перспективных И опытных пользователей 1 02-17-2007 04:11 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 06-05-2008
oabdalla oabdalla is offline
Зарегистрированный пользователь
  
 

Регистрация: Jun 2008
Сообщений: 2
сравнение файлов - добавление / вычета / форматирования столбцов

У меня есть два файла:
file1.txt:
FS Всего на бесплатном б%
/ u01 10000 8000 2000 80%
/ u02 10000 8000 2000 80%
/ u03 10000 8000 2000 80%
/ u04 10000 8000 2000 80%
/ u05 10000 8000 2000 80%
/ u06 10000 8000 2000 80%
/ u07 10000 8000 2000 80%
/ U10 10000 5000 5000 50%

file2.txt:
FS Adj
/ u01 1500
/ u05 500
/ U10 2500

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

FS Всего б + Adj свободной Adj (б + Adj) / Всего
-------- --------- --------- --------- ---------
/ u01 10000 9500 500 95%
/ u02 10000 8000 2000 80%
/ u03 10000 8000 2000 80%
/ u04 10000 8000 2000 80%
/ u05 10000 8500 1500 85%
/ u06 10000 8000 2000 80%
/ u07 10000 7500 2500 75%

Обратите внимание, что все строки из file1.txt перечислены, а в колонке "ADJ" из file2.txt добавлена колонка "б", и вычитаться из колонки "свободное" от file1.txt только если есть соответствие.

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

Спасибо,
Омер
Old 06-05-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
наркоман
  
 

Регистрация: Январь 2007
Местоположение: Варна, България / Милан, Италия
Сообщения: 2926
Вы можете использовать то вроде этого:
(использование nawk / или usr/xpg4/bin/awk по Solaris)


Код:
awk 'NR == FNR { 
  sub(/,/, "")
  _[$1] = $2 
  next 
  }
FNR == 1 { 
  printf "%4s %5s %8s %8s %14s\n", 
  "FS", "Total", "Used+Adj", "Free-Adj", "(Used+Adj)/Total"
  while (++i < 46) printf "-"
  print ""
  next
  }           
$1 in _ { 
  $3 += _[$1]
  $4 -= _[$1] 
  $5 = $3/$2*100 
  }
{
  printf "%4s %5d %8d %8d %14d%\n",
  $1, $2, $3, $4, $5
  }' file2.txt file1.txt

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

Регистрация: Jun 2008
Сообщений: 2
Спасибо, radoulov, за быстрые и elegent скриптов. Она работает прекрасно.
Все нужно делать сейчас формат доклада красиво, поэтому более читабельным, но я думаю, я могу, что из цифр.

Цените это

Омер
Old 06-11-2008
vakharia Махеш vakharia Mahesh is offline
Зарегистрированный пользователь
  
 

Регистрация: Февраль 2007
Сообщений: 51
Question сравнение файлов и т.д.

Привет Radoulov,
Я прочитал ваш сценарий. Eloborate Можете ли вы мне за знаниями. Спасибо.
Old 06-11-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
наркоман
  
 

Регистрация: Январь 2007
Местоположение: Варна, България / Милан, Италия
Сообщения: 2926
Цитата:
Первоначально Послано vakharia Махеш View Post
[...]
Можете ли вы eloborate для меня знаний
Конечно.


Код:
NR == FNR

Приведенные выше выражения возвращает верно лишь при обработке первой входной файл (file2). Таким образом, соответствующие действия:


Код:
{ 
  sub(/,/, "")
  _[$1] = $2 
  next 
  }

Стриптиз тысяч разделитель, заполнить ассоциативный массив _с $ 1 как ключи, $ 2 как ценности, так что с учетом вклада он будет:


Код:
key -> "/u01" value -> 1500
key -> "/u05" value -> 500
key -> "/u10" value -> 2500

Определенный артикль следующий заявление силы AWK прекратить обработку текущей записи так никакие дополнительные правила и действия будут выполнены для этой записи. Это означает, что в следующем действия не будут обрабатывать первый входной файл.


Код:
FNR == 1

ПЧН это количество записей, которые были прочитаны на сегодняшний день из текущего входного файла (второй входной файл в данном случае). Так, при обработке первый отчет о второй входной файл:


Код:
{ 
  printf "%4s %5s %8s %8s %14s\n", 
  "FS", "Total", "Used+Adj", "Free-Adj", "(Used+Adj)/Total"
  while (++i < 46) printf "-"
  print ""
  next
  }

Печать заголовков столбцов и перейти к следующий запись.


Код:
$1 in _ { 
  $3 += _[$1]
  $4 -= _[$1] 
  $5 = $3/$2*100 
  }

Выражение ключа в массиве Возвращает TRUE, если указанный ключ Имеющиеся в указанном массив. Для тех записей выполните следующие действия:
- Добавить ценность _ [$ 1] в соответствующую клавишу $ 1 в третьей колонке
- Вычитания стоимости _ [$ 1] в соответствующую клавишу $ 1 в четвертом столбце
- Рассчитать стоимость пятой колонке


Код:
{
  printf "%4s %5d %8d %8d %14d%\n",
  $1, $2, $3, $4, $5
  }

Печать новых ценностей.


Надеюсь, что это помогает.
Old 06-12-2008
vakharia Махеш vakharia Mahesh is offline
Зарегистрированный пользователь
  
 

Регистрация: Февраль 2007
Сообщений: 51
Thumbs up Сравнение файлов

SIMPLY SUPERB!! NO WORDSSSSSSSS будет достаточно СВОЙ ПУТЬ
Объясняя. Расслоений СПАСИБО ОТ BOTTOM OF MY HEART.Let мне
сказать, чтобы понять это somthing и объяснить, в простоте, которая является более
cumbersome.Once Спасибо еще раз.
Cheers Дмитрий.
Old 06-12-2008
vakharia Махеш vakharia Mahesh is offline
Зарегистрированный пользователь
  
 

Регистрация: Февраль 2007
Сообщений: 51
Thumbs up Сравнение файлов

Просто теперь я написал в ответ, но не appers где,

Уважаемые Radlouv
Расслоений Спасибо вам за разъяснение код очень прост перспективе.
Нет, но просто Superb. Нет слов будет недостаточно. Зная, что-то
но объяснить простым wrods требует больших Инсайт.

Спасибо еще раз. Поднимает настроение.
Closed Thread

Закладки

Теги
Solaris

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

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

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

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




Часовой пояс GMT -4. Текущее время 12:03 PM.


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