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
[color=blue]Wrócę jak zjem zupę i drugie danie - tyle[/color]
[color=blue]a oto ta zupa:[/color]

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

[url=lhttps://forum.dug.net.pl/viewtopic.php?id=28743]Było[/url]. 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".


[url=https://www.youtube.com/watch?v=rNg2Dh6gPkw]Nemo sailing home...[/url]

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

[b]@debbie[/b]

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 :)


[url=https://www.youtube.com/watch?v=rNg2Dh6gPkw]Nemo sailing home...[/url]

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 [b]usuwać[/b] wskazaną część ścieżki oraz[b] tą spację po \\serwer_new[/b][/quote]
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
[color=blue]Wrócę jak zjem zupę i drugie danie - tyle[/color]
[color=blue]a oto ta zupa:[/color]

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.


[url=https://www.youtube.com/watch?v=rNg2Dh6gPkw]Nemo sailing home...[/url]

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
[color=blue]Wrócę jak zjem zupę i drugie danie - tyle[/color]
[color=blue]a oto ta zupa:[/color]

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
[color=blue]Wrócę jak zjem zupę i drugie danie - tyle[/color]
[color=blue]a oto ta zupa:[/color]

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
[color=blue]Wrócę jak zjem zupę i drugie danie - tyle[/color]
[color=blue]a oto ta zupa:[/color]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.010 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00112 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.149.253.73' WHERE u.id=1
0.00065 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.149.253.73', 1733366133)
0.00040 SELECT * FROM punbb_online WHERE logged<1733365833
0.00060 DELETE FROM punbb_online WHERE ident='185.191.171.2'
0.00042 SELECT topic_id FROM punbb_posts WHERE id=303181
0.00004 SELECT id FROM punbb_posts WHERE topic_id=28755 ORDER BY posted
0.00062 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28755 AND t.moved_to IS NULL
0.00004 SELECT search_for, replace_with FROM punbb_censoring
0.00147 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28755 ORDER BY p.id LIMIT 0,25
0.00131 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28755
Total query time: 0.00681 s