LinuxForum.Fans
Тема

Как сравнить 2е строки?

Автор: mogul82 9 сообщений 2814 просмотров
#269759

С показом различий. Через diff наверное как то и xargs?

#269767

Не до конца я понял эту задачу, но...
... если просто нужно сравнить две строки, как результат выполнения двух команд, то можно примерно так:

text

lupo@gentoo-laptop ~ % [ "$(uname -r)" == "$(uname -a | awk '{print $3}')" ] && echo OK || echo NO
OK
lupo@gentoo-laptop ~ % [ "$(uname -r)" == "$(uname -a | awk '{print $2}')" ] && echo OK || echo NO
NO

P.S. Но тут без показа различий :(
P.S.S. Как вариант: в каждой из строк пробелы заменить на переносы строки и сравнить обычным diff'ом.

#269776

Не, мне надо выделять различия как в diff,

#269791

открою вам страшную тайну,
man diff

#269855
moshell написал:
открою вам страшную тайну,
man diff

diff работает только с файлами.

#269867
CyberDaemon написал:
[quote=moshell]открою вам страшную тайну,
man diff

diff работает только с файлами.[/quote]
И это проблема?
Первую строку в один файл, вторую в другой файл. Оба файла можно в рамдиске tmpfs (или ramfs) создать. Делов-то.

#269876

Если строгое сравнение, то вот по-быстрому накалякал (есдли я правильно понял задачу):

text

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import sys
sortedList = sorted([sys.argv[1], sys.argv[2]], key = len)
for i in range(len(sortedList[0])):
    if sortedList[0][i] != sortedList[1][i]:
        print "%s <-> %s" % (sortedList[0][i], sortedList[1][i])
print sortedList[1][len(sortedList[0]):]

[console]$ ./strdiff.py "Hello, my world" "Hello everybody"
, <->
<-> e
m <-> v
y <-> e
<-> r
w <-> y
o <-> b
r <-> o
l <-> d
d <-> y
[/console]

#269913

Ещё есть cmp для побайтного сравнения двух файлов.

Пётр.

#269944
"CyberDaemon" написал:
diff работает только с файлами.
в линухе всё - файлы.

"mogul82" написал:
Не, мне надо выделять различия как в diff,

а как оно в diff? у меня - никак, если речь о двух строках.

Войдите или зарегистрируйтесь, чтобы ответить.