Первоначально я создаю два файла, которые содержат списки URL-адресов - я буду ссылаться на них как old
и new
. Я хотел бы сравнить два файла, и если в new
файле есть URL-адреса, которых нет в old
файле, я бы хотел, чтобы они отображались в extra_urls
файле.
Теперь я прочитал кое-что об использовании diff
команды, но из того, что я могу сказать, это также анализирует порядок информации. Я не хочу, чтобы заказ оказал какое-либо влияние на результат. Я просто хочу, чтобы дополнительные URL были new
напечатаны в extra_urls
файле, независимо от того, в каком порядке они размещены в любом из двух других файлов.
Как я могу это сделать?
источник
diff
будет делать то же самое, верно?diff
покажет все отличия.comm
позволяет выбрать, хотите ли вы видеть строки из файла 1, файла 2 или те, которые у них общие.bash
работает? Это может не поддерживать процесс замены.Я бы просто использовал
grep
:объяснение
-f
: говорит,grep
чтобы прочитать его шаблоны поиска из файла. В этом случаеold
.-v
: сообщает grep, что нужно инвертировать совпадение, чтобы печатать только несоответствующие строки.-F
: говорит grep интерпретировать свои шаблоны поиска как строки, а не как регулярные выражения. Таким образом,.
URL будет совпадать буквально.В совокупности они позволяют
grep
печатать любые строкиnew
, которых не было вold
. Порядок URL-адресов в файле не имеет значения.источник
-F
для простых текстовых шаблоновТак как порядок важен для вас, используйте
awk
источник
> extra
на| sort > extra
. или| sort -u > extra
если вы хотите, чтобы новый URL-адрес появлялся на выходе только один раз, независимо от того, сколько раз он был на входе. Порядок ввода может повлиять на порядок вывода, если вы не проделаете дополнительную работу, чтобы предотвратить это.comm
является лучшим ответом на этот вопрос, хотяgrep -Fvf
тоже хорошУ меня есть приложение под названием Meld. Он позволяет просматривать два (или три) файла рядом друг с другом, показывает различия и позволяет выборочно копировать один в другой или удалять символы.
Meld может быть установлен из терминала с
источник