Portál AbcLinuxu, 10. května 2025 03:05

Dotaz: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?

21.11.2007 15:37 shepi | skóre: 6
Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Přečteno: 390×
Odpovědět | Admin
Moj problem spociva ze mam file naplneny udajmi a oddelene enterom. teraz potrebujem dostat tieto hodnoty do jedeho riadku. Skusal som sed aj awk ale vzdy mi to hodi pod seba.Napriklad subor test.txt obsahuje 0749276657002 21.11.2007 09:00:00

ked zadam awk 'NR==1 || NR==2 || NR==3' {print $0} vypise ich pod seba :-(( skusal som to aj rozdelit a napisat do scriptu ######################### #!/bin/bash veta1=´awk 'NR==1 {print $0}´ veta2=´awk 'NR==2 {print $0}´ veta3=´awk 'NR==3 {print $0}´ echo "$veta1 : $veta2 : $veta3" ######################### ale echo tu zblbne a nevie tie premenne kompletne zobrazit skusal som aj odstranit enter nepomohlo :-( dik za kazdy typ
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.11.2007 15:50 milda
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
myslim, ze tato systemova promena by mohla resit tvuj problem.
IFS=""
masomlejn avatar 21.11.2007 16:52 masomlejn | skóre: 16
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
co to zkusit takhle ?
 cat test.dat | awk '{printf("%f", $1)}'
je to ono?
masomlejn avatar 21.11.2007 16:57 masomlejn | skóre: 16
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
jen bych sam sebe opravil
cat test.dat | awk '{printf("%f\t", $1)}'
to \t ti ty jednotlivy polozky oddeli tabem. Nemuzu si vzpomenout jak je mezera... Jo uz sem na to prisel:
cat test.dat | awk '{printf("%f ", $1)}'
staci mezera:-)
21.11.2007 17:25 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nie je úplne jasný presný formát vstupných údajov, takže je dosť zložité niečo vyrobiť (je medzi tou skupinou troch riadkov prázdny riadok?). Navyše sed/awk nie je môj dobrý kamarát, takže to možno nebude úplne to, čo potrebuješ:
sed ':a;$!N;s/\n/ :/;$q;2~3ba' test.dat
21.11.2007 20:26 Martin Volf | skóre: 21
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co třeba echo $(<nazev_souboru) v bashi?
22.11.2007 08:31 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Opravdu elegantní řešení, zejména bude-li ten soubor několik GB dlouhý… :-)
22.11.2007 00:04 ghostmonk
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
paste -s -d " " <inputfile >outputfile
22.11.2007 00:34 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed -n 'H;$x;$s/\n//g;$p' inputfile
If you hold a Unix shell up to your ear, you can you hear the C.
22.11.2007 08:33 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Asi nejjednodušší by bylo použít

  tr "\n" " "

ale záleží na tom, co přesně potřebujete udělat.

22.11.2007 08:53 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
tr '\n' ' ' < soubor.txt
nebo
tr -d '\n' < soubor.txt
Užívej dne – možná je tvůj poslední.
22.11.2007 13:26 shepi | skóre: 6
Rozbalit Rozbalit vše Vyriesene:: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dakujem za vsetky typy ale SEMO mal najlepsi a ja asi aj najrychlejsi sposob. priklad: sed -n 'H;$x;$s/\n//g;$p' test.txt

nema sice ani sajnu co to tam napisal ale funguje to. Chapem z toto akurat H; neviem :-( $x; neviem :-(

$s/ co je nahrada \n je pravdepodobne novy riadok /g je globalne

$p neviem :-(

este raz vdaka
22.11.2007 14:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Vyriesene:: Ako dostat hodnoty zo suboru vedla seba na jeden riad
Řešení, které spočívá v tom, že se nejdřív celý soubor načte do paměti, bych neoznačil za lepší než takové, které funguje jako prostý filtr na libovolně dlouhém vstupu. A nahrazování značky LF pomocí regulárních výrazů nejspíš nebude ani rychlostí schopno konkurovat použití tr.
22.11.2007 14:43 shepi | skóre: 6
Rozbalit Rozbalit vše tr alebo sed podla chuti
Nechcem nikoho urazit. To riesenie co som napisal nie je zle ale bol tu hned nan dotaz a musim priznat ze riesenie cez tr je asi lepsie. Prvom rade je absolutne jednoduche pouzitie .

Skusal som to riesit aj cez IFS ale to sa mi zdalo uz na dlhsie lakte. Chcem este upozornit ludi ktory budu mat podobny problem asi pozreli file v hexa mode. Ja som vo finale zistil ze tam hadze este jednu escape sekvenciu. V notepade som to videl ako jeden enter ale ked som to prepol do hexa tak tam sa to tvarilo ze to ma 2 entery. Finalny tr prikaz som si upravil takto

tr '\n\r' ';' < $file

dik
22.11.2007 14:35 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Vyriesene:: Ako dostat hodnoty zo suboru vedla seba na jeden riadok ?
Najlepsie je asi to tr alebo paste. Ten sed najprv nazbiera cely vstup do pamate, potom z neho vymaze new-liny a potom to vypise.
If you hold a Unix shell up to your ear, you can you hear the C.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.