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  2011-10-03 17:06:39

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

sed dodawanie na poczatku linni znaku # w pętli

Witam
Taki mały problem z sed
Mamy plik test.txt z danymi:
test1
test2
test3
...
testn

Wstawiam do każdej liniii znak # na początek linii:

Kod:

sed -e 's/^/#/g' test.txt

Ładnie wszystko działa, mam na początku każdej linii #.
Plik test.txt mi się zmienia, dochodzą dodatkowe linie z wpisami  :
ala1
ala2
bela1
...
Robię drugi przebieg tej samej funkcji, jednak chcę tylko dodać # tam gdzie go nie ma.
jak puszczę powyższ epolecenie sed to doda mi do wszystkich linii dodatkowy # i w pliku będe miał np:
##test1

Jak to załatwić zgrabnie, bez kombinowania.
Pozdrawiam

Offline

 

#2  2011-10-03 17:45:38

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: sed dodawanie na poczatku linni znaku # w pętli

UWAGA ŁAMANIEC!! Wrażliwe oczy proszone o opuszczenie posta :)

Kod:

export I=0;cat d|while read LINE;do I=$(( $I + 1 )); if  ! [[ "$LINE" =~ "#" ]]; then sed -i -e "${I}s/^/#/" d;fi;done

Kod:

winnetou@Hordeum-vulgare /tmp $ cat d
test
test1
test2
test3
test4
winnetou@Hordeum-vulgare /tmp $ export I=0;cat d|while read LINE;do I=$(( $I + 1 )); if  ! [[ "$LINE" =~ "#" ]]; then sed -i -e "${I}s/^/#/" d;fi;done
winnetou@Hordeum-vulgare /tmp $ cat d
#test
#test1
#test2
#test3
#test4
winnetou@Hordeum-vulgare /tmp $ echo -e "test5\ntest6\ntest7" >> d
winnetou@Hordeum-vulgare /tmp $ cat d 
#test
#test1
#test2
#test3
#test4
test5
test6
test7
winnetou@Hordeum-vulgare /tmp $ export I=0;cat d|while read LINE;do I=$(( $I + 1 )); if  ! [[ "$LINE" =~ "#" ]]; then sed -i -e "${I}s/^/#/" d;fi;done
winnetou@Hordeum-vulgare /tmp $ cat d
#test
#test1
#test2
#test3
#test4
#test5
#test6
#test7

Ostatnio edytowany przez winnetou (2011-10-03 17:47:24)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#3  2011-10-03 18:07:05

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: sed dodawanie na poczatku linni znaku # w pętli

Kod:

sed -e '/^[^#]/s:^:#:' test.txt

Nie poprzedzi kratką pustych wierszy, jeżeli ma to dla Ciebie jakieś znaczenie.

Offline

 

#4  2011-10-03 18:09:30

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: sed dodawanie na poczatku linni znaku # w pętli

Minio - ten Twój sed taki fajny zgrabny ;)) Człowiek uczy się całe życie ;)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#5  2011-10-03 21:14:30

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: sed dodawanie na poczatku linni znaku # w pętli

Dzięki bardzo
O to mi chodziło
Pozdrawiam

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)