2014-01-17 2 views
0

я есть abc.log файл, содержащий имена файлов, как такПеренаправление повторяющиеся значения в новый файл

cat abc.log 
    > 
    a.arc 
    a.arc 
    b.arc 
    c.arc 
    c.arc 
    d.arc 
    e.arc 
    e.arc 
    f.arc 

я нужен скрипт, который сканирует abc.log файл и перенаправлять только повторяющиеся значения DEF. войти

требование:

 cat def.log 
     > 
     a.arc 
     c.arc 
     e.arc      
       /*only the duplicate values in abc.log*/ 

редактировать:

cat abc.log  /*may be unsorted too */ 
     > 
     a.arc 
     b.arc 
     c.arc 
     a.arc 
     c.arc 
     e.arc 
     e.arc 
     d.arc 

любые предложения

Заранее спасибо

ответ

0

@ ответ timrau лучше чем это:

awk '++seen[$0] == 2' in > out 

Единственное преимущество здесь вход не должен быть отсортирован.

+0

Спасибо, что искали решение для несортированного содержимого в abc.log – user3186568

+0

Что делать, если повторное число равно 2 или 3, как shud я изменяю awk – user3186568

+0

@ user3186568 Даже если есть больше дублирования, эта команда awk выводит только строку, когда она достигает дублированной строки во второй раз. Таким образом, он по-прежнему работает для дублирования более 2. – timrau

0

uniq -d использования.

uniq -d abc.log > def.log 

Обратите внимание, что в вашем вопросе есть замыкающая пространство во 2-й линии, но не в 1-й линии, что делает uniq рассматривать их как разные.

Для несортированным ввода:

sort abc.log | uniq -d > def.log 
+0

Примечание: 'uniq -d' требует сортировки ввода. –

+0

может предоставить решение для несортированного сценария –

+0

@NaveenReddy Отредактировано для несортированного ввода – timrau

Смежные вопросы