Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-07-04 00:35:39

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

problem ze slashami + diff

Witam,

Mam skrypt który wrzuca mi ścieżkę z dodanych plików.

Kod:

plik_poczatkowy="zawartosc_poczatkowa"
plik_koncowy="zawartosc_koncowa"
sciezka_do_katalogu="/root/katalog1/"
plik_do_wysylki="nowe_pliki.txt"
link_dla_danych="\\serwer_new"

diff $plik_poczatkowy $plik_koncowy | grep ">" | sed -e "s/>/$link_dla_danych/g" -e 's/\//\\/g' > $plik_do_wysylki

kiedy go wykonuje to dostaje komunikat:

Kod:

sed: -e wyrażenie #1, znak 19: nieprawidłowe odwołanie \1 po prawej stronie polecenia `s'

Jeśli do zmiennej link_dla_danych wrzucę:

Kod:

link_dla_danych="\\\\serwer_new"

(dwa dodatkowe slashe)

to skrypt wykonuje się bez problemu.

wtedy do pliku nowe_pliki.txt dostaję nowy wpis:

Kod:

\serwer_new \root\katalog1\plik32.txt

jak widać wrzucany jest z przodu tylko jeden slash a powinno być:

Kod:

\\serwer_new \root\katalog1\plik32.txt

do tego myślę jeszcze aby usuwać wskazaną część ścieżki oraz tą spację po \\serwer_new

tak aby wynik był taki:

Kod:

\\serwer_new\katalog1\plik32.txt

ma ktoś może pomysł jak to w jednym diffie załatwić?

pozdrawiam :)

Ostatnio edytowany przez debbie (2016-07-04 00:35:55)


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#2  2016-07-04 19:22:18

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: problem ze slashami + diff

Dosyć zagmatwany opis problemu.
Ogólnie w bashu znak \ jest traktowany jako specjalny, pozwalający "odczarować" kolejny znak tak, żeby ów nie był traktowany jako specjalny. Dotyczy to również jego samego. Polecam przeanalizować i wyciągnąć wnioski:

Kod:

$ echo "$DISPLAY"
:0.0
$ echo "\$DISPLAY"
$DISPLAY
$ var="\\1234"; echo "$var"
\1234
$ var='\\1234'; echo "$var"
\\1234

a to feler westchnął seler

Offline

 

#3  2016-07-04 22:14:43

  lis6502 - Łowca lamerów

lis6502
Łowca lamerów
Skąd: Stalinogród
Zarejestrowany: 2008-12-04

Re: problem ze slashami + diff

Było. Póki nie podzielisz się z nami kodem i nie opiszesz łopatą co Ty tak naprawdę chcesz osiągnąć to będziesz w kółko zakładać tematy o tym samym i grzęznąć w prostych problemach
MODEEEE

Offline

 

#4  2016-07-04 22:30:17

  Zbooj - Dark Sith

Zbooj
Dark Sith
Skąd: Siedziba Wszelkiego Zła
Zarejestrowany: 2005-07-28

Re: problem ze slashami + diff

Ja podawałem rozwiązanie... Dlaczego nie działa? Co zwraca?
Skoro pipeline się nie sprawdza to może jednak trzeba pętlą przejechać plik różnic?
Sed'em każdą linie załatwić i poskładać zmiennymi "stringi".

Offline

 

#5  2016-07-05 08:42:27

SamozwańczyKrólBasha
Lemur
Skąd: Wrocław
Zarejestrowany: 2016-02-24

Re: problem ze slashami + diff

@debbie

Jeśli dobrze zrozumiałem to chcesz tego...

Prosze:

Kod:

diff $plik_poczatkowy $plik_koncowy | grep ">" | sed -e "s/>/$link_dla_danych/g" -e 's/\//\\/g' | awk '$0="\\"$0' | tr -d ' ' > $plik_do_wysylki

Ostatnio edytowany przez SamozwańczyKrólBasha (2016-07-05 08:49:37)


A teraz wzbudzę w was poczucie niższości. Zresztą uzasadnione :)

Offline

 

#6  2016-07-05 10:54:48

  Zbooj - Dark Sith

Zbooj
Dark Sith
Skąd: Siedziba Wszelkiego Zła
Zarejestrowany: 2005-07-28

Re: problem ze slashami + diff

Kod:

diff $plik_poczatkowy $plik_koncowy | grep "> " | sed -e "s/> /$link_dla_danych/g" -e 's/\//\\/g' | awk '$0="\\"$0' > $plik_do_wysylki

Takie tam dopieszczanie ;)
Ten trim to tak chyba bardziej z przyzwyczajenia :)

Offline

 

#7  2016-07-05 11:34:10

SamozwańczyKrólBasha
Lemur
Skąd: Wrocław
Zarejestrowany: 2016-02-24

Re: problem ze slashami + diff

Napisałeś:

do tego myślę jeszcze aby usuwać wskazaną część ścieżki oraz tą spację po \\serwer_new

Dlatego dałem tego "tr" :) Ale masz rację, maniakalnie tego używam :)


A teraz wzbudzę w was poczucie niższości. Zresztą uzasadnione :)

Offline

 

#8  2016-07-05 14:16:07

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: problem ze slashami + diff

Wszystko jest niby OK...tylko kiedy w zmiennej

Kod:

link_dla_danych="\\serwer_new"

po wykonaniu powyższego dostaje:

Kod:

sed: -e wyrażenie #1, znak 20: nieprawidłowe odwołanie \1 po prawej stronie polecenia `s'

kiedy zaś mam dwa slashe więcej:

Kod:

link_dla_danych="\\\\serwer_new"

wtedy wszystko jest okej.

moge zrobić jeszcze tak, że zmienną link_dla_danych ustawię bez slashy...

Kod:

link_dla_danych="serwer_new"

tylko w wyniku ( w pliku txt wynikowym ) musze mieć np taki wpis:

Kod:

\\serwer_new\root\katalog1\sjdadjasdas.txt

do tego chciałbym do dodatkowej zmiennej wrzucić

Kod:

zmienna_do_wyciecia="\root"

tak aby wynikiem było:

Kod:

\\serwer_new\katalog1\sjdadjasdas.txt

Ostatnio edytowany przez debbie (2016-07-05 14:17:04)


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#9  2016-07-06 09:18:28

SamozwańczyKrólBasha
Lemur
Skąd: Wrocław
Zarejestrowany: 2016-02-24

Re: problem ze slashami + diff

No dobra. To teraz tak na szybko, na siłe, brzydko i brudno. Wyłapiesz jednal na tej podstawie jak upiększyć swój kod

Kod:

pan_zmienna=$(diff $plik_poczatkowy $plik_koncowy | grep ">" | sed -e "s/>/$link_dla_danych/g" -e 's/\//\\/g')

echo $(echo $pan_zmienna | awk '{print $1}') $(echo ${pan_zmienna##*root}) | tr -d ' ' | awk '$0="\\"$0'

@debbie

Było by lepiej jakbyś pokazał cały kod :) To by nam ułatwiło zadanie

Ostatnio edytowany przez SamozwańczyKrólBasha (2016-07-06 09:19:17)


A teraz wzbudzę w was poczucie niższości. Zresztą uzasadnione :)

Offline

 

#10  2016-07-06 12:40:21

  Zbooj - Dark Sith

Zbooj
Dark Sith
Skąd: Siedziba Wszelkiego Zła
Zarejestrowany: 2005-07-28

Re: problem ze slashami + diff

Kod:

plik_poczatkowy="plik1.txt"
plik_koncowy="plik2.txt"
plik_do_wysylki="nowe_pliki.txt"
do_wyciecia="> /root"
do_wklejenia="\\\\serwer"

diff $plik_poczatkowy $plik_koncowy | grep "> " | sed -e "s,$do_wyciecia,$do_wklejenia,g" | sed -e 's,\/,\\,g' | awk '$0="\\"$0' > $plik_do_wysylki

Nie róbmy naokoło....

Na biedę można byłoby jeszcze użyć cut z opcją c lub b, bo każda linia zaczyna się taka samą ilością znaków.

Offline

 

#11  2016-07-11 13:38:53

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: problem ze slashami + diff

Dzięki bardzo...jednak odnosząc się do powyższego..
jesli zmienna jest:

Kod:

do_wklejenia="\\\\serwer"

to jest okej...ale u mnei zmienna wygląda:

Kod:

do_wklejenia="\\serwer"

i wtedy w wyniku ( otrzymuje z przodu tylko jeden slash z przodu np:

Kod:

\serwer_new\katalog1\sjdadjasdas.txt

).


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#12  2016-07-11 13:43:05

SamozwańczyKrólBasha
Lemur
Skąd: Wrocław
Zarejestrowany: 2016-02-24

Re: problem ze slashami + diff

No to dlatego masz

Kod:

| awk '$0="\\"$0'

. Dzięki temu dostaniesz dodatkowy \ na począdku wiersza.


A teraz wzbudzę w was poczucie niższości. Zresztą uzasadnione :)

Offline

 

#13  2016-07-11 13:51:09

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: problem ze slashami + diff

Tyle że dostaje tylko jeden...a powinny byc dwa...

Kod:

\\serwer_new\katalog1\sjdadjasdas.txt

debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#14  2016-07-11 14:06:28

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: problem ze slashami + diff

spróbuj zamiast

Kod:

do_wklejenia="\\serwer"

użyć

Kod:

do_wklejenia='\\serwer'

a to feler westchnął seler

Offline

 

#15  2016-07-11 14:28:11

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: problem ze slashami + diff

GRA GITARA! :D Dzięki bardzo Seler :)))) o to mi chodziło :)


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)