The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"удаление строк в файле"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"удаление строк в файле"  
Сообщение от ncp email on 12-Янв-07, 20:30 
Друзья! Помогите сделать такую вещь:
Есть файл 1.txt и есть файл 2.txt
Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "удаление строк в файле"  
Сообщение от Sergey (??) on 12-Янв-07, 20:34 
открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь 1 файл, берешь 2ую строку... и т.д.
или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы... как получеться оптимальнее, решай сам... в разных ситуациях по разному... в одних нужна скорость, в других можно пренебречь, но поберечь ресурсы
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "удаление строк в файле"  
Сообщение от ncp email on 12-Янв-07, 20:49 
>открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь
>1 файл, берешь 2ую строку... и т.д.
>или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы...
>как получеться оптимальнее, решай сам... в разных ситуациях по разному... в
>одних нужна скорость, в других можно пренебречь, но поберечь ресурсы


Я не знаю, что такое массив. Если можно напишите проще. Еще вся ботва в том, что нужен скрипт, с помощью которого я могу делать эту операцию периодически. Это возможно?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "удаление строк в файле"  
Сообщение от redmoon email(??) on 12-Янв-07, 22:03 
>открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь
>1 файл, берешь 2ую строку... и т.д.
>или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы...
>как получеться оптимальнее, решай сам... в разных ситуациях по разному... в
>одних нужна скорость, в других можно пренебречь, но поберечь ресурсы


мужики,всем дарофф,не мучайте парня, пусть читает man grep, ,man awk

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "удаление строк в файле"  
Сообщение от newser (ok) on 13-Янв-07, 00:30 
>>открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь
>>1 файл, берешь 2ую строку... и т.д.
>>или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы...
>>как получеться оптимальнее, решай сам... в разных ситуациях по разному... в
>>одних нужна скорость, в других можно пренебречь, но поберечь ресурсы
>
>
>мужики,всем дарофф,не мучайте парня, пусть читает man grep, ,man awk

Кстати, если файлы можно сортировать, то еще проще: man sort и man comm.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "удаление строк в файле"  
Сообщение от Sergey (??) on 13-Янв-07, 00:54 
на баше можно загнать в массив, что бы баш делал автоотределения масива, тоже что и авк, но приетом значительно меньше памяти расходуеться и скорость выше... я в свое время етот вопрос обсасывал и пришел к такому выводу, что лучше на баше строить.

man bash

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "удаление строк в файле"  
Сообщение от newser (ok) on 13-Янв-07, 01:25 
>на баше можно загнать в массив, что бы баш делал автоотределения масива,
>тоже что и авк, но приетом значительно меньше памяти расходуеться и
>скорость выше... я в свое время етот вопрос обсасывал и пришел
>к такому выводу, что лучше на баше строить.
>
>man bash

Ну нет у меня баша, хоть убейте! И не пользуюсь я им! И ставить ради подобных сомнительных преймуществ не стал бы, т.к. в данном случае задача единоразовая, и память для изложенных условий не критичный фактор. Уж лучше использовать более портабельный вариант (sed, awk, comm). Да и perl еще забыли упомянуть.

P.S. Кстати, что так уперлись в массивы? Я уже изложил подход, который ВООБЩЕ не требует массивов, так что про "расход памяти" лучше помолчать. :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "удаление строк в файле"  
Сообщение от ncp email on 13-Янв-07, 11:24 
Ладно. Спасибо всем. Буду читать маны. Только через них лежит путь к пониманию :) Благо что часть их на русском.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "удаление строк в файле"  
Сообщение от Duck on 13-Янв-07, 14:24 
Странно, как это нет баша? Такого не встречал.
На мой взгляд равноценно задача решается как на баше так и  на перрл, написать готовое решение не сложно, но принципиально то, что чел юзающий *никс должен такие задачи решать сам, это задачка для первокласника.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "удаление строк в файле"  
Сообщение от newser (ok) on 13-Янв-07, 15:30 
>Странно, как это нет баша? Такого не встречал.

Так а Вы, видать, кроме Linux никаких *nix систем и не знаете. :)
Например, в *BSD нет bash, ставится из портов, если он нужен.
К тому же, bash - это ДАЛЕКО не единственная оболочка, так что...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "удаление строк в файле"  
Сообщение от Duck on 13-Янв-07, 22:41 
>Так а Вы, видать, кроме Linux никаких *nix систем и не знаете.
>:)
да, да совершенно незнаю :) читая заголовок делаешь вывод, что чел юзает  линукс

>Например, в *BSD нет bash, ставится из портов, если он нужен.
>К тому же, bash - это ДАЛЕКО не единственная оболочка, так что...
>
видимо у Вас какой-то специальный, заказной дистр BSD, что на нём есть всё что нужно.
Почему-то мне пришлось 80% FreeBSD ставить из портов.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "удаление строк в файле"  
Сообщение от newser (ok) on 14-Янв-07, 01:51 
>>Например, в *BSD нет bash, ставится из портов, если он нужен.
>>К тому же, bash - это ДАЛЕКО не единственная оболочка, так что...
>>
>видимо у Вас какой-то специальный, заказной дистр BSD, что на нём есть
>всё что нужно.
>Почему-то мне пришлось 80% FreeBSD ставить из портов.

Разговор шел о bash. В базовой установке FreeBSD его нет, есть в портах, но лично я им не пользуюсь, а потому не ставлю. :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "удаление строк в файле"  
Сообщение от ncp email on 13-Янв-07, 17:20 
>Друзья! Помогите сделать такую вещь:
>Есть файл 1.txt и есть файл 2.txt
>Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
>Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
>Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
>


Мужики! Я разобрался! На самом деле не нужны никакие массивы в этом случае. Вся операция выполняется с помощью команды comm.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "удаление строк в файле"  
Сообщение от Duck on 13-Янв-07, 22:45 
>>Друзья! Помогите сделать такую вещь:
>>Есть файл 1.txt и есть файл 2.txt
>>Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
>>Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
>>Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
>>
>
>
>Мужики! Я разобрался! На самом деле не нужны никакие массивы в этом
>случае. Вся операция выполняется с помощью команды comm.

а как удалять строки из файла 1.txt ? видимо одной комманды comm маловато.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "удаление строк в файле"  
Сообщение от Sergey email(??) on 14-Янв-07, 00:00 
теоретически,можно , сделать выборку... и удалить файл (исходный) заменив полученым...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "удаление строк в файле"  
Сообщение от ncp email on 14-Янв-07, 00:46 
>>>Друзья! Помогите сделать такую вещь:
>>>Есть файл 1.txt и есть файл 2.txt
>>>Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
>>>Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
>>>Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
>>>
>>
>>
>>Мужики! Я разобрался! На самом деле не нужны никакие массивы в этом
>>случае. Вся операция выполняется с помощью команды comm.
>
>а как удалять строки из файла 1.txt ? видимо одной комманды comm
>маловато.


При запуске без ключей команда comm выдает результат в три столбца.  Первый столбец
содержит строки, уникальные для ФАЙЛА1, второй -- уникальные для
ФАЙЛА2, а третий -- общие для обоих файлов строки.

Есть следующие ключи:

  -1              не показывать строки, уникальные для ФАЙЛА1
  -2              не показывать строки, уникальные для ФАЙЛА2
  -3              не показывать строки, встреченные в обоих файлах

Ставим ключи -2 и -3. На вывод получаем только строки уникальные для файла 1.txt
Добавляем вывод в файл 3.txt и получаем в файле 3.txt отфильтрованный файл.

В общем команда выглядит так comm -2 -3 1.txt 2.txt > 3.txt

И ВСЕ!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру