Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Сравнение 2 - х файлов с помощью shell,awk,sed...  (Прочитано 5678 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #15 : 22 Декабря 2012, 23:25:24 »
Но если выполнять с конструкцией awk, не фильтрует 2-ой файл:
awk --version?

более того и не работает с такой конструкцией внутри:
sed -n '/$LINE/p' 2.txt
Подстановка значений переменных не будет работать под одинарными кавычками.

Оффлайн Juve_Nic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #16 : 24 Декабря 2012, 11:50:31 »
к сожалению в Solaris не работает awk --version, --version , -help , --help. C nawk кстати тоже не работает. При использовании с sed внутри '' двойных кавычек тоже не работает


Пользователь решил продолжить мысль 24 Декабря 2012, 11:51:00:
кстати с nawk тоже не работает.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #17 : 24 Декабря 2012, 12:12:02 »
Давайте отталкиваться от того, что имеется в наличии.

Оффлайн Juve_Nic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #18 : 24 Декабря 2012, 12:20:50 »
nvprokop@spbxts3> uname -a
SunOS spbxts3 5.10 Generic_144488-09 sun4u sparc SUNW,Netra-240
nvprokop@spbxts3> whereis awk
awk: /usr/bin/awk /usr/man/man1/awk.1
nvprokop@spbxts3> whereis nawk
nawk: /usr/bin/nawk /usr/man/man1/nawk.1
nvprokop@spbxts3> whereis sed
sed: /usr/bin/sed /usr/ucb/sed /usr/man/man1/sed.1 /usr/man/man1b/sed.1b
 

Есть 10 солярка с базовыми пакетами sed, awk +
nvprokop@spbxts3> env
HOME=/home/nvprokop
PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/dt/bin:/opt/SUNWconn/bin:/opt/SUNWste/bin:/opt/ericsson/bin:/opt/sybase/sybase/OCS-15_0/bin:/opt/sun/jdk/java/bin:/usr/ucb:/usr/proc/bin:/opt/ericsson/sck/bin:/opt/ericsson/nms_cif_ist/bin:/usr/openwin/bin:/usr/local/bin
LOGNAME=nvprokop
HZ=
TERM=xterm
SHELL=/usr/bin/tcsh
MAIL=/var/mail/nvprokop
TZ=Etc/GMT-4
HOSTTYPE=sun4
VENDOR=sun
OSTYPE=solaris
MACHTYPE=sparc
SHLVL=1
PWD=/home/nvprokop
USER=nvprokop
GROUP=nms
HOST=spbxts3
REMOTEHOST=10.16.17.198
EDITOR=vi
LANG=C
MANPATH=/usr/man:/usr/dt/man:/usr/share/man:/usr/openwin/man:/opt/VRTS/man:/opt/ericsson/man:/opt/SUNWconn/man:/opt/SUNWconn/x25/man:/opt/SUNWrtvc/man:/opt/SUNWste/license_tools/man:/opt/SUNWste/man:/usr/local/man
DISPLAY=10.16.17.198:0.0
LD_LIBRARY_PATH=/usr/lib/lwp:/usr/lib:/usr/dt/lib:/opt/ericsson/lib:/usr/openwin/lib
IT_CONFIG_PATH=/opt/iona/orbix/config
SYBASE=/opt/sybase/sybase
SYBASE_ASE=ASE-15_0
SYBASE_OCS=OCS-15_0
DSQUERY=masterdataservice

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #19 : 24 Декабря 2012, 12:24:56 »
which awk
Wars ~.o

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #20 : 24 Декабря 2012, 12:26:54 »
У меня вот так:
$ namei $(which awk)
f: /usr/bin/awk
 d /
 d usr
 d bin
 l awk -> gawk
   - gawk

Т.е. вам надо либо поставить gawk, либо переписать этот кусок под awk/nawk, либо использовать иные инструменты/алгоритмы.

Оффлайн Juve_Nic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #21 : 24 Декабря 2012, 12:48:52 »
nvprokop@spbxts3> which awk
/usr/bin/awk
 

пишет тоже что и на whereis

Пользователь решил продолжить мысль 24 Декабря 2012, 16:34:00:
поставил другой awk, вроде как заработало, спасибо всем большое

Пользователь решил продолжить мысль 25 Декабря 2012, 11:50:57:
теперь вот такая проблема с конструкцией этой:
==> 1.txt <==
1
2
3
6
8
10

==> 2 <==
1 qwe
2 wer
3 rty
4 tyu
5 yui
6 uio
7 asd
8 sdf
9 fgh
10 dfg

==> output <==
qwe
dfg
wer
rty
uio
sdf
dfg
В общем смысле какой - что /1/ находит и 1 и 10
« Последнее редактирование: 25 Декабря 2012, 11:50:57 от Juve_Nic »

Оффлайн Juve_Nic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #22 : 25 Декабря 2012, 12:51:44 »
/^$LINE$/ не катит

Пользователь решил продолжить мысль 25 Декабря 2012, 12:52:47:
==> 1.txt <==
1
2
3
6
8
10

==> 2.txt <==
1 qwe
2 wer
3 dfg
4 ghj
5 ghl
6 nmf
7 xcv
10 fff
100 sdd
1000 cvv

==> output <==
qwe
fff
sdd
cvv
wer
dfg
nmf
fff
sdd
cvv
cat 1.txt | while read LINE ; do awk -F'^[[:digit:]]* ' "/$LINE"$"/{print \$2}" 2.txt >> output ; done без кавычек не работает с $

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #23 : 25 Декабря 2012, 12:57:19 »
/^$LINE$/ не катит
Ой, пардон:
/^$LINE /=)

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #24 : 25 Декабря 2012, 13:03:11 »
L~$ a=12345;echo 098765 | sed 's/098765/'"$a"'/g'
12345
L~$ a=12345;b=098765;echo 098765 | sed 's/'"$b"'/'"$a"'/g'
12345
Wars ~.o

Оффлайн Juve_Nic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #25 : 25 Декабря 2012, 14:36:28 »
/^$LINE$/ не катит
Ой, пардон:
/^$LINE /=)

ну тогда допустим есть число 23 , при пойске /23 / сюда может попасть и 123)

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #26 : 25 Декабря 2012, 15:00:21 »
ну тогда допустим есть число 23 , при пойске /23 / сюда может попасть и 123)
Циркумфлекс куда выкинули? Он начало строки обозначает.

Оффлайн Juve_Nic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #27 : 25 Декабря 2012, 15:24:46 »
с ним почему-то не работает

Пользователь решил продолжить мысль 25 Декабря 2012, 15:27:20:
^ без кавычек должна быть?
« Последнее редактирование: 25 Декабря 2012, 15:27:20 от Juve_Nic »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #28 : 25 Декабря 2012, 15:46:47 »
Цитировать
с ним почему-то не работает
бросай, лучше мсдос.
Wars ~.o

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сравнение 2 - х файлов с помощью shell,awk,sed...
« Ответ #29 : 25 Декабря 2012, 15:56:32 »
Juve_Nic, попробуйте оба варианта:
Код: (bash) [Выделить]
cat 1.txt | while read LINE ; do awk -F'^[[:digit:]]* ' "/^$LINE /{print \$2}" 2.txt ; done
cat 1.txt | while read LINE ; do awk -F'^[[:digit:]]* ' "/\^$LINE /{print \$2}" 2.txt ; done

 

Страница сгенерирована за 0.025 секунд. Запросов: 21.