LINUX.ORG.RU

Скрипт на bash - вывести строки из одного файла, но не имеющиеся в другом


0

0

Просьба помочь с такой задачкой: Нужно написать такой скрипт на bash (есть perl, можно вызывать)

Есть 2 файла: small.txt big.txt Нужно вывести третий файл, в котором будут все строки из small.txt, но не входящие в big.txt. Как бы это реализовать?

Ответ на: комментарий от KRoN73

> grep -vf big.txt small.txt

давай переведу: вывести каждый *regexp* файла big.txt по файлу small.txt и инвертировать вывод
А если в файле будет `.*' отгадай что выведе grep?

anonymous
()
Ответ на: комментарий от KRoN73

> Хм. Странно. А что, grep не умеет грепать без регекспов? Навскидку не нашёл в мане.

Почему? Умеет, конечно. grep -F pattern или fgrep pattern
А твой пример скорее всего будет fgrep -vf big.txt small.txt или grep -vFf big.txt small.txt

anonymous
()

{ { cat small.txt | sed 's/$/A/'; cat big.txt | sed 's/$/B/'; } | sort | sed 's/^\(.*\)\(.\)$/\2 \1/'; echo Z; } | awk '{ x=$1; y=substr($0, 3) } (y != prev || x == "Z") { if (coun_b == 0 && coun_a > 0) print prev; coun_a=coun_b=0; } { prev=y; coun_a+=(x=="A"); coun_b+=(x=="B") }'

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

по-моему это быдлокод можно было б сократить, если заюзать getline() из awk(1)'а...
но видимо автор этого не осилил как и переносы строк и заменить sed(1) на split() из awk(1)'а...

anonymous
()
Ответ на: комментарий от dilmah

не, это не шаблон, а билет в биореактор...

anonymous
()
Ответ на: комментарий от anonymous

> по-моему это быдлокод можно было б сократить, если заюзать getline() из awk(1)'а...

иди, работай, перл твой язык.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

> иди, работай, перл твой язык.

неа, lush(1). Впрочем и он, и перл это большие комбайны давно ожиревшие и не влезающие в понятие unix way.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.