Portál AbcLinuxu, 26. dubna 2024 21:59


Dotaz: sed_náhrada

7.10.2014 10:13 marian34
sed_náhrada
Přečteno: 772×
Odpovědět | Admin
Páni,ako zapísať
sed 's/D1 .. 00/\nD1 ?? 00/g'

vyhladať "D1 čokolvek 00" a nahradiť(nový riadok) "D1 práve_to_čokolvek 00"


Prečo nefunguje tento zápis:

jpnevulator -t /dev/ttyS0 -r | tr '\n' ' ' | sed 's/D1 00/\nD1 00/g'
pokiaľ to zapíšem len s jedným presmerovaním(či už tr,alebo sed),tak je to ok.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.10.2014 10:55 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed_náhrada
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pokud se mi čirou náhodou podařilo uhodnout, co jste měl na mysli, můžete zkusit

  sed -re 's/D1 .* 00/\n&/'

Jinak buď můžete doufat, že někdo bude mít víc štěstí, nebo to zkusit znovu a srozumitelněji.

7.10.2014 11:36 marian34
Rozbalit Rozbalit vše Re: sed_náhrada
Ok,dík.Také ľahké kua. A čo to dvojité presmerovanie?
marian@marian-desktop:~$ jpnevulator -t /dev/ttyS0 -r
00 3B 9F 11 40 60 49 52 44 45 54 4F 20 41 43 53
20 56 36 2E 30 D2 42 00 00 01 42 1D 90 19 D2 FE
00 00 19 FE 01 02 00 00 21 00 00 10 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 0D 90 00 D2
40 00 00 11 40 03 0B 16 01 1D 00 00 00 01 00 01
00 00 00 00 00 0E 90 09 D2 FE 00 00 09 FE 01 02
marian@marian-desktop:~$ jpnevulator -t /dev/ttyS0 -r | tr '\n' ' '
D5 00 80 02 50 00 00 00 80 06 01 49 62 55 AA B4 E4 54 14 A8 A3 7B E4 1C EB 77 F3 06 BC 92 02 EF D4 BB 92 BB C9 4A 49 C5 63 F4 C0 E4 C3 A8 6D 9D 20 0A 83 C2 C7 07 FC CA 6F 75 69 35 76 09 F5 D0 84 0C 46 7A 2F 8B C4 8E B4 34 61 52 34 26 91 FB 70 C9 D7 9F 03 14 90 41 D5 FE 80 02 41 FE 01 05 9D 00 38 01 02 38 3A 12 F6 57
ale
marian@marian-desktop:~$ jpnevulator -t /dev/ttyS0 -r | tr '\n' ' ' | sed 's/D1 .. 00/\n&/g'

už nefacha
7.10.2014 12:04 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed_náhrada
Pokud jste to nepochopil z mé první odpovědi, tak to zkusím napsat přímo: pokud chcete poradit, musíte srozumitelně popsat, čeho vlastně chcete dosáhnout. To jste dosud neudělal. Jak souvisí vzorek neobsahující žádný výskyt "D1" s tím nahrazením, to opravdu netuším. A "nefacha" jako popis problému opravdu nefunguje.
7.10.2014 12:05 ET
Rozbalit Rozbalit vše Re: sed_náhrada
nebude to tim, ze retezec "D1" se ve vystuptu (jpnevulator -t /dev/ttyS0 -r) nevyskytuje? :)
7.10.2014 12:26 marian34
Rozbalit Rozbalit vše Re: sed_náhrada
Tie dáta sú len príkladom(a ukážka výstupného formátu).Reťazec "D1" sa vo výstupe jpnevulatora určite nachádza(aj keď zrovna v ukážkových dátach možno nefiguruje).Ide o to,že posledný príkaz negeneruje žiadny výstup.
7.10.2014 12:36 chrono
Rozbalit Rozbalit vše Re: sed_náhrada
Nemôže byť problém to, že tr odstráni úplne všetky konce riadkov?
7.10.2014 12:55 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed_náhrada
Tak co takhle konečně ukázat nějaká data, na kterých se to má šanci projevit, a vysvětlit, co by to s nimi mělo udělat?
7.10.2014 13:09 marian34
Rozbalit Rozbalit vše Re: sed_náhrada
B2 90 00 D1 00 00 00 24 00 98 00 00 00 00 1D CC
A8 ED B7 09 5A 41 7F 29 18 3C 4B A5 BB A3 43 EC
A5 4A A7 30 1C 99 02 24 E7 7C CF E7 F6 90 19 D1
FE 00 00 19 FE 01 01 00 00 3F 00 00 10 49 7F 30
D8 BB 03 36 F5 19 92 05 0C B9 A5 FD 4A 9C 90 00
B2 90 00
D1 00 00 00 24 00 98 00 00 00 00 1D CC A8 ED B7 09 5A 41 7F 29 18 3C 4B A5 BB A3 43 EC
A5 4A A7 30 1C 99 02 24 E7 7C CF E7 F6 90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 49 7F 30 D8 BB 03 36 F5 19 92 05 0C B9 A5 FD 4A 9C 90 00
7.10.2014 13:26 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed_náhrada
Na základě čeho se má dát newline zrovna mezi "EC" a "A5"?
7.10.2014 14:03 marian34
Rozbalit Rozbalit vše Re: sed_náhrada
B2 90 00
D1 00 00 00 24 00 98 00 00 00 00 1D CC A8 ED B7 09 5A 41 7F 29 18 3C 4B A5 BB A3 43 EC A5 4A A7 30 1C 99 02 24 E7 7C CF E7 F6 90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 49 7F 30 D8 BB 03 36 F5 19 92 05 0C B9 A5 FD 4A 9C 90 00
7.10.2014 14:15 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed_náhrada

V tom případě mi

  tr '\n' ' ' | sed -re 's/D1 .. 00/\n&/g'

dává vámi požadovaný výsledek.

7.10.2014 14:46 marian34
Rozbalit Rozbalit vše Re: sed_náhrada
Ok,dík.Funkčné,pokiaľ dáta načítam zo súboru.

No tej dvojitej pipe niečo vadí.

7.10.2014 14:48 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed_náhrada
Bufferování?
Řešení 1× (iKoulee)
7.10.2014 14:54 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed_náhrada
Problém je nejspíš ještě jednodušší… sed zpracovává vstupní text po řádcích, takže když mu všechny LF nahradíte mezerami, nikdy mu první řádek neskončí. A z /dev/ttyS0 pochopitelně nikdy nedostane ani EOF.
7.10.2014 15:02 marian34
Rozbalit Rozbalit vše Re: sed_náhrada
Fajn,síce nie celkom chápem o čom píšete,ale znie to logicky. Tr tam napokon ani nemusí byť.Ešte raz dík.

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.