Portál AbcLinuxu, 31. července 2025 08:28


Dotaz: Vkládání mezery mezi znaky

17.7.2007 22:07 anonymouz
Vkládání mezery mezi znaky
Přečteno: 316×
Odpovědět | Admin
Ahoj máme například textový soubor s obsahem hexa "FF41D2". Jak vložit mezeru mezi každé dva znaky tak aby vznil "FF 41 D2" (rozsekal se)? Mám na mysli ve skriptu pro sh/bash...hrál jsem si s regulárními výrazy ale bez úspěchu. Moc dík
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Gilhad avatar 17.7.2007 22:36 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: Vkládání mezery mezi znaky
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed "s/../\0 /g" <xxx.txt >yyy.txt 
Tohle mi funguje
17.7.2007 22:51 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: Vkládání mezery mezi znaky
Odpovědět | | Sbalit | Link | Blokovat | Admin
V C nebo Perlu bych věděl jak, ale v Bashi neumím zásadní věc - brát string po písmenech, možná to přes nějaký regexp půjde..
Pak už jen stačí cyklus, kde bude jedna proměnná, která se v prvním kole zkontroluje a pokud má hodnotu 0, změní se na 1 a vypíše se první znak. Uvedená podmínka má za úkol kontrolovat, zda je proměnná 1 nebo 0, v případě, že je 1, vypíše znak i s mezerou a proměnnou vynuluje. To způsobí, že zápis bude vypadat jako AB CD EF GH ..

uvedu jednoduchý příklad na lepší pochopení v C..
#include <stdio.h>

main()
{
  FILE *f;
  int c, p = 0;
  f = fopen("soubor.txt","r");

  while ((c = getc(f)) != EOF)
  {
    if (p == 1) {
      p = 0;
      printf("%c ", c);
    } else {
      printf("%c", c);
      p = 1;
    }
  }
  fclose(f);
}
Za předpokladu, že vstup je v soubor.txt... snad jsem to napsal tak, aby to pochopil i člověk pracující s bashem...
18.7.2007 07:46 anonymouz
Rozbalit Rozbalit vše Re: Vkládání mezery mezi znaky
Odpovědět | | Sbalit | Link | Blokovat | Admin
DĚKUJI!

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.