Nejsem si jistý diff
sám to dokáže, ale vždy můžete využít sílu jiných GNU utilit, aby vám pomohly.
diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'
Provede rozdíl, pak vybere pouze řádky, které začínají '-' - ty se změní a mají hodnoty ze souboru diffa.txt, pak sed
stačí odstranit ty znaky '-'.
Upravit: Po několika experimentech s diff
, vypadá to, že níže uvedený příkaz vytváří to, co chcete:
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
Jednodušší metodou je použití comm
linuxový nástroj (Pro vstup potřebuje seřazený soubor). Zapisuje na standardní výstup:
-
řádky, které jsou jedinečné pro soubor diffa.txt
-
řádky, které jsou jedinečné pro diffb.txt
-
řádky, které jsou běžné
a každý z nich můžete potlačit parametrem 1,2 nebo 3 odpovídajícím způsobem. Takže ve vašem případě to bude vypadat takto :
comm -23 diffa.txt diffb.txt
Potlačí řádky, které jsou jedinečné pro diffb.txt, řádky, které jsou společné, a vytiskne řádky, které jsou jedinečné pouze pro diffa.txt
Zdroj: https://www.tutorialspoint.com/unix_commands/comm.htm
Rád bych zmínil, že comm
očekává setříděné vstupní soubory, a proto hlásí jiné výsledky než diff
.
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
je univerzální. Díky @vava