Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Почистить файл от дублей строк и сохранить их в отдельный файл  (Прочитано 1580 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zorgingyaringen

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Добрый день ! подскажите пожалуйста новичку, как удалить дубли строк из файла и сохранить их в отдельный файл.
Ранее дубли удалял вот таким способом cat 1.txt |sort -u >res.txt.
Сейчас потребовалось сохранить дубли в отдельный файл, поискал по форуму что то ничего подходящего не нашел.


Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
sort -u file.in >file.out.uniq
sort file.in | uniq -d >file.out.dup

Оффлайн zorgingyaringen

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Ребят подскажите еще момент. Стоит такая задача.
Есть база данных в txt формате. Надо сделать из нее выборку по каждому запросу в отдельный файл.

т.е есть База данных base.txt и список запросов name.txt
name.txt содержит список сотрудников.
Вася
Илья
Ильдар
Володя 

Нужно пройтись по списку и сделать выборку из базы по каждому имени и сохранить каждую выборку в отдельный файл > Вася.txt  Илья.txt Ильдар.txt Володя.txt

Подскажите пожалуйста как это можно реализовать.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Код: (bash) [Выделить]
while IFS= read -r name
do
  grep "$name" base.txt > "${name}.txt"
done < name.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн zorgingyaringen

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Код: (bash) [Выделить]
while IFS= read -r name
do
  grep "$name" base.txt > "${name}.txt"
done < name.txt
Azure, благодарю за помощь.
Но что то у меня не получается разобраться.
Скрипт выполняю в системе на сервере Centos 6.5
при выполнении никаких ошибок не пишет, после выполнения в каталоге создаются пустые файлы в конце имени у которых знак вопроса.





Если смотреть через ftp просмотщик в винде то почему то не показывает вообще расширения txt у этих файлов



Тестовый файл base.txt содержит в себе строки



и файл name.txt содержит в себе имена



Подскажите пожалуйста что делаю не так.


Правила форума
Цитата: Правила форума
1.5. Для добавления графических изображений в сообщения требуется использовать внешние сервисы. Подробную инструкцию, а так же список рекомендованных и запрещенных сервисов можно посмотреть в «Руководстве по добавлению изображений на форум».

--chemtech
« Последнее редактирование: 24 Декабря 2014, 20:03:41 от chemtech »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
zorgingyaringen,
Если файлы создавались в Винде стоит модифицировать скрипт
Код: (bash) [Выделить]
while read name
do
  grep "$name" base.txt > "${name}.txt"
done < name.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн zorgingyaringen

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
zorgingyaringen,
Если файлы создавались в Винде стоит модифицировать скрипт
Код: (bash) [Выделить]
while read name
do
  grep "$name" base.txt > "${name}.txt"
done < name.txt
Azure, спасибо большое, разобрался.
Только теперь вылез еще один момент. Скрипт реагирует на регистр искомых значений.
Можно ли сделать так что бы он делал выборку не обращая на регистр искомого значения ?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Поиск без учёта регистра : опция -i команды grep. Кроме того, советую названия файлов писать как-нибудь однообразно, например все с большой буквы:grep --ignore-case "$name" base.txt > "${name^}.txt"
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.079 секунд. Запросов: 25.