The UNIX and Linux Forums  

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



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

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Как удалить повторяющиеся записи без сортировки svenkatareddy Shell программирование и сценарии 19 06-11-2008 03:10 PM
Как удалить повторяющиеся записи без сортировки svenkatareddy SUN Solaris 2 02-28-2008 08:38 AM
Повторяющиеся записи из Oracle в текстовый файл. shilendrajadon UNIX перспективных И опытных пользователей 1 01-10-2008 11:21 AM
Удаление повторяющихся записей из тильда файл irshadm Shell программирование и сценарии 5 12-06-2007 05:36 AM
Удаление повторяющихся строк из файла Стив Nysif UNIX для чайников Вопросы И Ответы 18 09-09-2007 09:57 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 12-11-2007
vukkusila vukkusila is offline
Зарегистрированный пользователь
  
 

Регистрация: август 2007
Сообщений: 6
Удалить все экземпляры повторяющихся записей из файлов

Привет эксперты,
Я новичок в сценарии. У меня есть требование как ниже.

File1:

A | 123 | NAME1
A | 123 | NAME2
B | 123 | NAME3

File2:

C | 123 | NAME4
C | 123 | NAME5
D | 123 | NAME6

1) У меня есть 2 объединить оба файла.
2) необходимо сделать рода (основные поля первом и втором местах)
3) устранить всех случаях дублирующих записей из файлов объединены писать и писать все эти дубликаты случаях в одном файле.
4) остальная часть записи, которые являются уникальными в первоначальный источник файлы, необходимо быть написаны в другой файл

outfiles:

file3:
A | 123 | NAME1
A | 123 | NAME2
C | 123 | NAME4
C | 123 | NAME5

File4:

B | 123 | NAME3
D | 123 | NAME6

Пожалуйста, помогите мне с решением, так как я в реальном срочно. Благодарим вас за помощь.

Спасибо
Old 12-12-2007
user_prady user_prady is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2007
Сообщений: 163
Цитата:
Первоначально Послано vukkusila View Post
Привет эксперты,
Я новичок в сценарии. У меня есть требование как ниже.

File1:

A | 123 | NAME1
A | 123 | NAME2
B | 123 | NAME3

File2:

C | 123 | NAME4
C | 123 | NAME5
D | 123 | NAME6

1) У меня есть 2 объединить оба файла.
2) необходимо сделать рода (основные поля первом и втором местах)
3) устранить всех случаях дублирующих записей из файлов объединены писать и писать все эти дубликаты случаях в одном файле.
4) остальная часть записи, которые являются уникальными в первоначальный источник файлы, необходимо быть написаны в другой файл

outfiles:

file3:
A | 123 | NAME1
A | 123 | NAME2
C | 123 | NAME4
C | 123 | NAME5

File4:

B | 123 | NAME3
D | 123 | NAME6

Пожалуйста, помогите мне с решением, так как я в реальном срочно. Благодарим вас за помощь.

Спасибо
Если я не неправильно вашей каждой записи в file1 и file2, как представляется, быть уникальными данными. Я указав последнего символа файлов.

Итак, если все данные являются уникальными все записи следует искать в File4 .. n't ли это?

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

кроме меня ..

Ура
user_prady
Old 12-12-2007
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
  
 

Регистрация: Февраль 2006
Место проведения: Альмерия ", Испания
Сообщений: 393
Попробовать что-нибудь вроде:

Код:
 sort -t'|' -k 1,1 File1 File2|awk -F\| 'BEGIN{i=0}{
                              pat=$1"|"$2
                              ocurrences[pat]++
                              line[i]=$0
                              i++
       }
       END {
          for (j=0;j<i;j++)
              {
              pat=substr(line[j],1,5)
              if (ocurrences[pat]>1)
                print line[j]>>"File3"
              else
                print line[j]>>"File4"
              }
      }'

Old 12-12-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
наркоман
  
 

Регистрация: Январь 2007
Местоположение: Варна, България / Милан, Италия
Сообщения: 2926
Другая сортировать / Awk решения
(если ваши файлы не сортируются в качестве образца вас в курсе):


Код:
sort -t\| -k1,2 file1 file2|awk '{
	x[$1,$2]++
	y[NR] = $0
} END {
	for (i = 1; i <= NR; i++)
		print y[i] > ((x[substr(y[i],1,5)] > 1) ? "file3" : "file4")
}' SUBSEP="|" FS="|"

Использование nawk / или usr/xpg4/bin/awk на Solaris.

PS Для переменной ширины столбца: вы не должны использовать substr, но разделен на примере:


Код:
sort -t\| -k1,2 file1 file2|awk '{
	x[$1,$2]++
	y[NR] = $0
} END {
	for (i = 1; i <= NR; i++)
		{
			tmp = y[i]
			split(tmp,z)
			print tmp > ((x[z[1],z[2]] > 1) ? "file3" : "file4")
	}
}' SUBSEP="|" FS="|"


Последний раз редактировалось radoulov; на 12-12-2007 08:16 AM..
Closed Thread

Закладки

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

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

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

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




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