Титла: BASH compare help Публикувано от: martos в Dec 10, 2010, 12:01 Здравейте,
Търся простичък начин за сравняването на резултатите от изпълнението на две команди и извеждането на разликите, ако има такива. Резултатът и от двете команди е списък IP адреси, по един на ред. Някакви насоки? Титла: Re: BASH compare help Публикувано от: ROKO__ в Dec 10, 2010, 12:07 Здравейте, Не ти разбрах точно въпроса. Искаш скрипта после да те пита за два отделни параметъра от които изхода да е на два отделни реда ? Титла: Re: BASH compare help Публикувано от: b2l в Dec 10, 2010, 12:08 Здравейте, PS: diff исках да кажа. Титла: Re: BASH compare help Публикувано от: bop_bop_mara в Dec 10, 2010, 12:18 ???Здравейте, @martos т.е. трябва ти нещо като diff/cmp но не за файлове, а за низове? Титла: Re: BASH compare help Публикувано от: laskov в Dec 10, 2010, 12:19 dd няма нищо общо. Виж diff като първо може би sort
Титла: Re: BASH compare help Публикувано от: martos в Dec 10, 2010, 12:48 Нека обясня малко по-добре:)
Имам команда1 с изход: Код: 192.168.1.5 Команда2 с изход: Код: 192.168.1.5 Искам да получа като резултат: Код: 192.168.4.52 Титла: Re: BASH compare help Публикувано от: koue в Dec 10, 2010, 12:50 Първо изпълни sort -n на двата списъка, после ако се налага (според условието) изпълни uniq на двата списъка и след това им направи diff.
Титла: Re: BASH compare help Публикувано от: bop_bop_mara в Dec 10, 2010, 13:10 Код
Това взима изходите от 2те команди, записва ги в по една променлива (внимание - новите редове стават на спейсове). Обикаля всяка отделна дума в 1вата променлива и я търси във втората, ако не я намери, я изпизва на ст. изход. За твоя случай (понеже IP-тата са 1 дума) трябва да работи. Ако ти трябва не само да ти покаже кои от 1вия списък не се срещат във 2рия, ами и кои от 2рия не се срещат в 1вия, повтаряш for-а, заменяйки out1 с out2 и обратно. Заради <<< това работи на bash, но не и на стандартен shell, засега не се сещам как да се заобиколи, но предполагам, че може. @koue - сорт, uniq, diff работят с файлове. Т.е. става и с тях, но трябва изходите от командите да се записват във файлове, а засега martos не е казал, че иска това :) Титла: Re: BASH compare help Публикувано от: martos в Dec 10, 2010, 14:50
Едно ОГРОМНО БЛАГОДАРЯ!;) Титла: Re: BASH compare help Публикувано от: sstefanov в Dec 10, 2010, 15:30 Ако резултатите са във файлове f1 и f2 съответно, то следната команда прави това, което искаш:
grep -v -f f2 f1 Титла: Re: BASH compare help Публикувано от: martos в Dec 11, 2010, 09:45 Трябваше ми решение без файлове. Вариантът на bop_bop_mara ми свърши перфектна работа:)
Титла: Re: BASH compare help Публикувано от: radoulov в Dec 11, 2010, 10:49 Трябваше ми решение без файлове. Код: grep -fv <(cmd2) <(cmd1) |