URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8149
[ Назад ]

Исходное сообщение
"bash - удалить строки из файла"

Отправлено xristofer_robin , 12-Мрт-09 15:55 
Каким образом на bash из файла A удалить все строки которые присутствуют в файле B? Может быть есть какая-то утилита, типа merge? Спасибо.




Содержание

Сообщения в этом обсуждении
"bash - удалить строки из файла"
Отправлено phpcoder , 12-Мрт-09 15:59 
>Каким образом на bash из файла A удалить все строки которые присутствуют
>в файле B? Может быть есть какая-то утилита, типа merge? Спасибо.

grep, ага



"bash - удалить строки из файла"
Отправлено phpcoder , 12-Мрт-09 16:03 
>Каким образом на bash из файла A удалить все строки которые присутствуют
>в файле B? Может быть есть какая-то утилита, типа merge? Спасибо.

P.S.: fgrep -v -F B A



"bash - удалить строки из файла"
Отправлено phpcoder , 12-Мрт-09 16:06 
>>Каким образом на bash из файла A удалить все строки которые присутствуют
>>в файле B? Может быть есть какая-то утилита, типа merge? Спасибо.
>
>P.S.: fgrep -v -F B A

P.S. Ещё можно comm попробовать.



"bash - удалить строки из файла"
Отправлено Andrey Mitrofanov , 12-Мрт-09 16:49 
>>P.S.: fgrep -v -F B A
>P.S. Ещё можно comm попробовать.

И join. Именно что попробовать...

Хотя на _баше_, оно, конечно, ...

while read lin1; do
  if egrep ... "^`escape_for_grep "$lin1"`"'$' <fileB >&/dev/null; then
    echo "$lin1"
  fi
done <fileA

..., однако ме-е-е-едленно.


"bash - удалить строки из файла"
Отправлено angra , 12-Мрт-09 19:16 
С каких пор egrep это часть _баша_? :)
comm таки лучше всего подходит


"весёло... тут, нужны ещё минимум двое: постановщик и програм..."
Отправлено Andrey Mitrofanov , 13-Мрт-09 09:38 
>С каких пор egrep это часть _баша_? :)
>comm таки лучше всего подходит

Ну, примерно с тех же пор, как и comm с join-ом. ;)
А по поводу второго вложенного while read, реализующего ~fgrep, -- даже и не шути так. $)


"bash - удалить строки из файла"
Отправлено xristofer_robin , 12-Мрт-09 16:07 
>>Каким образом на bash из файла A удалить все строки которые присутствуют
>>в файле B? Может быть есть какая-то утилита, типа merge? Спасибо.
>
>P.S.: fgrep -v -F B A

так пробовал, не работает.


"bash - удалить строки из файла"
Отправлено vic , 13-Мрт-09 12:09 
>Каким образом на bash из файла A удалить все строки которые присутствуют
>в файле B? Может быть есть какая-то утилита, типа merge? Спасибо.

нюанс. если вы воспользуетесь утилитой comm как советуют товарищи, то помните что в man comm не просто так написано что компарятся sorted files :)