Portál AbcLinuxu, 14. května 2025 02:59

Dotaz: Porovnavani souboru

25.3.2006 22:40 szafa | skóre: 2 | London
Porovnavani souboru
Přečteno: 198×
Odpovědět | Admin
Dobrý den, rád bych poprosil o pomoc.

Mám 2 txt soubory novy.txt a stary.txt oba soubory maji <200 řadku a na kazdej řadce 1 záznam. Potřebuju porovnat soubory a vsechno co se nenacházi v stary.txt napsat do pridano.txt a co se nenacházi v novy.txt zas napsat do odebrano.txt.

Neví někdo jak toto udělat příp. odkaz na nějakou web stránku, kde se tohle řeší?
Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.3.2006 22:49 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Porovnavani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příkaz diff by nestačil?
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
25.3.2006 23:12 szafa | skóre: 2 | London
Rozbalit Rozbalit vše Re: Porovnavani souboru
Bohuzel ne, diff mi tam dava vsechno co je na jinym radku.
25.3.2006 23:33 Bubak | skóre: 16 | blog: Čtvrtá cenová
Rozbalit Rozbalit vše Re: Porovnavani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
man diff, man grep nebo man awk

Muzes zkusit treba neco takoveho:
diff a b | awk ' { if ($1 == "<") print substr($0, 3) >> "a1" ; else if ($1 == ">") print substr($0, 3) >> "b1" } '

Pokud by se jednalo treba o nazvy souboru, ktere neobsahuji mezery, lze to zjednodusit takto:
diff a b | awk ' { if ($1 == "< ") print $2 >> "a1" ; else if ($1 == "> ") print $2 >> "b1" } '
... máš jen mrtvou kočku a poškrábanýho jezevčíka ...
25.3.2006 23:42 Bubak | skóre: 16 | blog: Čtvrtá cenová
Rozbalit Rozbalit vše Re: Porovnavani souboru
A v te druhe variante je chyba:-). V tech podminkach samozrejme nemaji co delat mezery ("< " ma byt "<" a ta druha podobne:-)).
... máš jen mrtvou kočku a poškrábanýho jezevčíka ...
25.3.2006 23:54 szafa | skóre: 2 | London
Rozbalit Rozbalit vše Re: Porovnavani souboru
Prvni varianta funguje az prilis.
Vsechno co se nachazi v souboru A na jinym radku nez v souboru B a vice versa se pak dostane do A1 a B1
26.3.2006 00:01 Bubak | skóre: 16 | blog: Čtvrtá cenová
Rozbalit Rozbalit vše Re: Porovnavani souboru
Aha, tak to by nejspis chtelo ty soubory pred porovnanim setridit? Zkus sort a > as, sort b > bs a porovnavat ty setridene...
... máš jen mrtvou kočku a poškrábanýho jezevčíka ...
25.3.2006 23:39 Bubak | skóre: 16 | blog: Čtvrtá cenová
Rozbalit Rozbalit vše Re: Porovnavani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Anebo s tim grepem treba takhle:
diff a b > x
grep "<" x > a1
grep ">" x > b1

Tech zobacku a mezery na zacatku se urcite uz dokazes zbavit:-).
... máš jen mrtvou kočku a poškrábanýho jezevčíka ...
26.3.2006 01:07 michich
Rozbalit Rozbalit vše Re: Porovnavani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
diff je v tomto případě kanon na vrabce. Lepší bude použít comm(1). man comm
26.3.2006 12:51 Bubak | skóre: 16 | blog: Čtvrtá cenová
Rozbalit Rozbalit vše Re: Porovnavani souboru
No jo, hezky:-). Stydim se, za ta leta, co pouzivam unix jsem tohle nikdy nepouzil a nevim, ze to existuje:-).
... máš jen mrtvou kočku a poškrábanýho jezevčíka ...
19.9.2006 18:09 Robin Kryštůfek
Rozbalit Rozbalit vše Re: Porovnavani souboru
Co dělat, když mam soubor něco.diff a potřebuju s ním opravit soubor něco.c ?
Marek Bernát avatar 19.9.2006 18:47 Marek Bernát | skóre: 17 | blog: Arcadia
Rozbalit Rozbalit vše Re: Porovnavani souboru
patch
physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
Marek Bernát avatar 19.9.2006 18:49 Marek Bernát | skóre: 17 | blog: Arcadia
Rozbalit Rozbalit vše Re: Porovnavani souboru
Ja ho poznám, ale to len preto, že som si raz pozeral nejakú zbierku všetkých bežných *nixových utilít :-D Inak som to v živote nepoužil, takže by ma to tiež nenapadlo.
physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.