GNU/Linux >> Znalost Linux >  >> Linux

Výstup společných řádků (podobností) dvou textových souborů (opak rozdílu)?

Diff je skvělý nástroj pro zobrazení změn mezi dvěma soubory. Jak ale zobrazit podobnosti dvou textových souborů (a přitom ignorovat rozdíly)?

Tj. vzorový vstup:

a:
Foo Bar
X
Hello
World
42

b:
Foo Baz
Hello
World
23

Pseudo výstup (něco jako toto):

@@ 2,3
=Hello World

Pouhé seřazení obou souborů a použití comm nestačí, protože v takovém případě se informace o řádku ztratí.

Přijatá odpověď:

Co takhle použít diff, i když nechcete diff? Zkuste toto:

diff --unchanged-group-format='@@ %dn,%df 
  %<' --old-group-format='' --new-group-format='' 
  --changed-group-format='' a.txt b.txt

Zde je to, co dostanu s vašimi ukázkovými daty:

$ cat a.txt 
Foo Bar
X
Hello
World
42
$ cat b.txt 
Foo Baz
Hello
World
23
$ diff --unchanged-group-format='@@ %dn,%df
%<' --old-group-format='' --new-group-format='' 
  --changed-group-format='' a.txt b.txt
@@ 2,3
Hello
World

Linux
  1. Jak převést textové soubory na všechna velká nebo malá písmena

  2. Jak uložit výstup tohoto příkazu awk do souboru?

  3. Jak získat rozdíl (pouze doplňky) mezi dvěma soubory v linuxu

  1. Ručně sloučit dva soubory pomocí diff

  2. Jak mohu získat slova mezi prvními dvěma výskyty textu/vzoru?

  3. Jak zkopírovat výstup terminálu?

  1. Jak spojit dva textové soubory v Linuxu

  2. Jak změnit příponu více souborů?

  3. Společné řádky mezi dvěma soubory?