[SOLVED][BASH] Usuwanie znaków nowej linii
- rryk
- Serdeczny Borsuk
- Posty: 206
- Rejestracja: 04 mar 2008, 16:00
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: GNOME
- Kontakt:
[SOLVED][BASH] Usuwanie znaków nowej linii
Tak jak w temacie jak usunąć wszystkie znaki nowej linii z pliku lub zmiennej
-
- Wytworny Kaczor
- Posty: 470
- Rejestracja: 30 mar 2009, 18:00
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: MATE
- Architektura: ARM
Odp: [BASH] Usuwanie znaków nowej linii
za pomocą grep -v '^ *$'
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
Inny OS: PLD Linux
Inny OS: PLD Linux
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
Kod: Zaznacz cały
tr -d '\n'
- azhag
- Serdeczny Borsuk
- Posty: 151
- Rejestracja: 24 maja 2010, 19:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Fluxbox
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
W bashu i dashu, ale już nie w żadnej lepszej powłoce (np. zsh) ? po prostu nie używaj cudzysłowu:rryk pisze:usunąć wszystkie znaki nowej linii z (...) zmiennej
Kod: Zaznacz cały
azhag@debian:/tmp$ foo="a
> b
> c"
azhag@debian:/tmp$ echo "$foo"
a
b
c
azhag@debian:/tmp$ echo $foo
a b c
azhag@debian:/tmp$
Polski portal Debiana: http://dug.net.pl/
- rryk
- Serdeczny Borsuk
- Posty: 206
- Rejestracja: 04 mar 2008, 16:00
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: GNOME
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
robie tak na zmiennej i nic nie dziala tzn
mam np zmienną
i robię teraz to co wy mówicie następnie zapisuje do pliku otwieram a zmienna nadal ma "entery"
mam np zmienną
Kod: Zaznacz cały
zmienna=`cat plik`
- azhag
- Serdeczny Borsuk
- Posty: 151
- Rejestracja: 24 maja 2010, 19:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Fluxbox
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
Kod: Zaznacz cały
zmienna=$(tr '\n' ' ' <plik)
Polski portal Debiana: http://dug.net.pl/
- rryk
- Serdeczny Borsuk
- Posty: 206
- Rejestracja: 04 mar 2008, 16:00
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: GNOME
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
chce je po po prostu usunąć nie zamieniać na spacje lecz niestety nie chce to działać bo po zapisaniu do pliku znowu mam normalne linijki
- azhag
- Serdeczny Borsuk
- Posty: 151
- Rejestracja: 24 maja 2010, 19:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Fluxbox
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
W takim razie problem leży gdzieś indziej, bo to po prostu musi działać.rryk pisze:chce je po po prostu usunąć nie zamieniać na spacje lecz niestety nie chce to działać bo po zapisaniu do pliku znowu mam normalne linijki
Kod: Zaznacz cały
azhag@debian:/tmp$ cat plik
a
b
c
d
e
f
g
azhag@debian:/tmp$ zmienna=$(tr -d '\n' <plik)
azhag@debian:/tmp$ echo $zmienna
abcdefg
Polski portal Debiana: http://dug.net.pl/
- rryk
- Serdeczny Borsuk
- Posty: 206
- Rejestracja: 04 mar 2008, 16:00
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: GNOME
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
Próbowałem już wszystkiego:
a i tak po zapisaniu zmiennej do pliku mam to samo...
EDIT:
Tu chodzi o to że mam zmienną np
google=`wget -q google.pl -O -`
chce teraz zapisać to do pliku tak aby wszystko było ciągłym tekstem tj. nei zawierało "enterów"
Kod: Zaznacz cały
sed ':a;N;$!ba;s/\n//g'
perl -e 'while (<>) { chomp; print; }; exit;'
awk '{ printf "%s ", $0 }'
EDIT:
Tu chodzi o to że mam zmienną np
google=`wget -q google.pl -O -`
chce teraz zapisać to do pliku tak aby wszystko było ciągłym tekstem tj. nei zawierało "enterów"
- azhag
- Serdeczny Borsuk
- Posty: 151
- Rejestracja: 24 maja 2010, 19:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Fluxbox
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
Żaden problem:rryk pisze:EDIT:
Tu chodzi o to że mam zmienną np
google=`wget -q google.pl -O -`
chce teraz zapisać to do pliku tak aby wszystko było ciągłym tekstem tj. nei zawierało "enterów"
Kod: Zaznacz cały
azhag@debian:/tmp$ ZMIENNA=`wget -q google.pl -O -`
azhag@debian:/tmp$ ZMIENNA2=`wget -q google.pl -O - | tr -d '\n'`
azhag@debian:/tmp$ echo "$ZMIENNA" >plik_wielolinijkowy
azhag@debian:/tmp$ echo $ZMIENNA >plik_jednololinijkowy_ze_spacjami_zamiast_nowych_linii
azhag@debian:/tmp$ echo "$ZMIENNA2" >plik_jednololinijkowy_bez_spacji
azhag@debian:/tmp$ wc -l plik_*
1 plik_jednololinijkowy_bez_spacji
1 plik_jednololinijkowy_ze_spacjami_zamiast_nowych_linii
10 plik_wielolinijkowy
12 razem
Polski portal Debiana: http://dug.net.pl/
- rryk
- Serdeczny Borsuk
- Posty: 206
- Rejestracja: 04 mar 2008, 16:00
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: GNOME
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
no akurat na google to dziala ale u mnei nie ok moze pokaze dokładnie o co mi chodzi:
mam
a chce miec
Ps. Pod </p> są jeszcze 3 entery
mam
Kod: Zaznacz cały
ludz
:
lol
</p>
Kod: Zaznacz cały
ludz: lol
- azhag
- Serdeczny Borsuk
- Posty: 151
- Rejestracja: 24 maja 2010, 19:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Fluxbox
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
Nieprawda. To działa wszędzie. Ze wszystkim, nie ma znaczenia czy to plik, zmienna, dane właśnie pobierane skądkolwiek. Zawsze kasuje znak nowej linii.rryk pisze:no akurat na google to dziala ale u mnei nie
Jeśli u Ciebie ?nie działa?, to znaczy, że robisz coś źle. Ponieważ w dalszym ciągu nie pokazujesz całości, musisz sam zdebugować ? linia po linii. Konkretny fragment działa, QED kilkukrotnie.
Polski portal Debiana: http://dug.net.pl/
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
Należy pamiętać, że strony mogą być zapisane z windowsowym zakończeniem linii (CR+LF) albo unicode albo jeszcze co innego...
- azhag
- Serdeczny Borsuk
- Posty: 151
- Rejestracja: 24 maja 2010, 19:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Fluxbox
- Architektura: x86
- Kontakt:
Odp: [BASH] Usuwanie znaków nowej linii
No tak, że ja używam tylko GNU/Linuksa, nie oznacza jeszcze, że cały świat to robi. ;)beluosus pisze:Należy pamiętać, że strony mogą być zapisane z windowsowym zakończeniem linii (CR+LF) albo unicode albo jeszcze co innego...
W takim wypadku powinno wystarczyć dodanie do potoku dos2unix lub mac2unix. Unicode, z którym rzeczywiście tr ma problemy, nie powinno grać roli ? znak nowej linii jest w UTF taki sam jak w ISO. Gorzej jakby chciał usuwać polskie znaki.
Polski portal Debiana: http://dug.net.pl/
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości