Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Prosím o pomoc se skriptem  (Přečteno 1582 krát)

compaq

  • Závislák
  • ***
  • Příspěvků: 2453
  • Díky všem za rady a tipy.
Prosím o pomoc se skriptem
« kdy: 23 Prosince 2011, 01:00:55 »
Jsem laik a potřebuji u všech souborů z GPS Trackeru SONY (*.log) odstranit pro další zpracování v gpsbabel stejný první řádek:

Příklad:

*.log před úpravou
Citace
@Sonygps/ver1.0/wgs-84/gps-cs3.0
$GPGGA,150018,5004.8976,N,01424.9536,E,1,03,05.7,00204.5,M,045.5,M,00,0000*42
$GPGSA,A,2,01,11,23,,,,,,,,,,05.8,05.7,00.9*05

po úpravě
Citace
$GPGGA,150018,5004.8976,N,01424.9536,E,1,03,05.7,00204.5,M,045.5,M,00,0000*42
$GPGSA,A,2,01,11,23,,,,,,,,,,05.8,05.7,00.9*05

Neumím si napsat skript. Pomůže někdo? Díky.
Pokud vám vaše holka či manželka funguje jak má, neměňte jí za mladší, zaděláte si na problém. Stejně to dělejte i s Ubuntu.

Kedrigern

Re:Prosím o pomoc se skriptem
« Odpověď #1 kdy: 23 Prosince 2011, 02:10:21 »
Předpokládám, že máš všechny soubory s kterými chceš manipulovat v jedné složce. Dále tak také nesmíš mít jiné s koncovkou log (jinak se jim také umaže řádek). Samozřejmě by to šlo ošetřit, ale to bych ti nenapsal v noci.

Kód: [Vybrat]
#!/bin/bash

for i in *.log ; do                     # cyklus, projde vsechny soubory s priponou log
  sed '1d' "$i" > "${i}.tmp";          # smaze prvni radku a ulozi do noveho souboru (s koncovkou tmp)
  rm "$i" ;                                    # smaze puvodni soubor
  mv "${i}.tmp" "${i}" ;                    # prejmenuje novy soubor na nazev stareho
done;

Čili
1) Tohle (skript) ulož jako prostý textový soubor s koncovkou .sh.
2) Pak si naskládej kopie logů do jedné složky
3) V dané složce si otevři terminál
4) Učiň skript spustitelným (musíš ho mít ve stejné složce):
Kód: [Vybrat]
chmod +x <skript>.sh5) Spusť ho:
Kód: [Vybrat]
./<skript>.sh
Za <skript>.sh vždy doplň název skriptu.

Skript jsem netestoval (nejsem u linuxu), ale pokud si to zkusíš na kopii dat, tak nic nezkazíš.

compaq

  • Závislák
  • ***
  • Příspěvků: 2453
  • Díky všem za rady a tipy.
Re:Prosím o pomoc se skriptem
« Odpověď #2 kdy: 23 Prosince 2011, 09:44:41 »
Díky moc. Vyzkouším.

Ještě mě v noci napadlo, jestli neexistuje nějaký příkaz "vezmi ze souboru x.txt znaky 12 až konec a ulož ho tak, nebo tak něco bylo v historických jazycích... :-)

První řádek v logu je vždy stejný...
Pokud vám vaše holka či manželka funguje jak má, neměňte jí za mladší, zaděláte si na problém. Stejně to dělejte i s Ubuntu.

Kedrigern

Re:Prosím o pomoc se skriptem
« Odpověď #3 kdy: 23 Prosince 2011, 11:28:31 »
No to by ten sed uměl také. Problém je, že sed je streamový (proudový) editor a neumí rovnu vzít soubor a upravit ho. Vždy mu musíš dát vstupní a výstupní soubor.

Což mi připomnělo jak je to správněji:
Kód: [Vybrat]
#!/bin/bash

for i in *.log ; do                     # cyklus, projde vsechny soubory s priponou log
  ed "$i" <<<'1d
w'
done;

starenka

  • Stálý člen
  • **
  • Příspěvků: 1276
  • Karma: plynová [zapalovač] [hasičák]
    • /home/starenka
Re:Prosím o pomoc se skriptem
« Odpověď #4 kdy: 23 Prosince 2011, 11:40:50 »
man head
man tail

;)
mojenka | blozinek v2 | starej blozinek | krotim hady za penize | UJ! Kalužátor

Debian testing vrní v Thinkpadu X200/bedně/EEE 900a, MasoX Tiger v lampe

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Prosím o pomoc se skriptem
« Odpověď #5 kdy: 23 Prosince 2011, 14:08:40 »
No to by ten sed uměl také. Problém je, že sed je streamový (proudový) editor a neumí rovnu vzít soubor a upravit ho. Vždy mu musíš dát vstupní a výstupní soubor.

Což mi připomnělo jak je to správněji:

Ale umí, viz přepínač -i ;)

Kedrigern

Re:Prosím o pomoc se skriptem
« Odpověď #6 kdy: 24 Prosince 2011, 15:17:12 »
No to by ten sed uměl také. Problém je, že sed je streamový (proudový) editor a neumí rovnu vzít soubor a upravit ho. Vždy mu musíš dát vstupní a výstupní soubor.

Což mi připomnělo jak je to správněji:

Ale umí, viz přepínač -i ;)

IMHO:
1) GNU extensions
2) V reálu to bude procovat tak, že to vytvoří dočasný soubor a tamten pak nahradí. Ed by to měl opravdu jen editnout (což by mohlo být znát u nějakých gigantických logů).
Což je v tomto případě samozřejmě jedno. Ale obecně je lepší snažit se šetřit zdroji vždy.

1x23

  • Aktivní člen
  • *
  • Příspěvků: 449
Re:Prosím o pomoc se skriptem
« Odpověď #7 kdy: 29 Prosince 2011, 12:14:15 »
ahoj potreboval bych vypsat stav raid pole, ale skoncil jsem na tom, ze mi u awk nebere $4 a bere to jako promennou. jak by to slo obejit?

#!/bin/bash

RAIDHODNOTA="cat /proc/mdstat | grep blocks | awk '{ print $4 }'"

        echo $RAIDHODNOTA


exit 0

Dekuji
NTB: Lenovo P50. OS - Ubuntu 18.04

Linux registred user: 499415

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:Prosím o pomoc se skriptem
« Odpověď #8 kdy: 29 Prosince 2011, 13:10:45 »
když ty uvozovky vyměníš za protičárky (jak to asi chceš mít) tak ti to fungovat bude
Kód: [Vybrat]
RAIDHODNOTA=`cat /proc/mdstat | grep blocks | awk '{ print $4 }'`
taky nemusíš používat awk, na takhle jednoduché věci stačí cut
Kód: [Vybrat]
RAIDHODNOTA=`cat /proc/mdstat | grep blocks | cut -d" " -f4`

1x23

  • Aktivní člen
  • *
  • Příspěvků: 449
Re:Prosím o pomoc se skriptem
« Odpověď #9 kdy: 29 Prosince 2011, 16:34:53 »
super, dekuji:)
NTB: Lenovo P50. OS - Ubuntu 18.04

Linux registred user: 499415

 

Provoz zaštiťuje spolek OpenAlt.