Portál AbcLinuxu, 7. května 2025 19:52

Dotaz: Sed (alebo niečo iné) a úprava jedného súboru iným

19.3.2012 18:55 Peter
Sed (alebo niečo iné) a úprava jedného súboru iným
Přečteno: 286×
Odpovědět | Admin

Dobrý deň vám prajem. Mám dva súbory - napríklad template.gnuplot a uprava.dat Súbor template.gnuplot obsahuje nasledovné

set terminal png nocrop enhanced font "./template/arial.ttf,12" size 1024,768

f(x)=m*x+b
fit f(x) "{Data}" via m,b

set title "{Title}" font "./template/arial.ttf,20"

set output "{Output}"
set xlabel "{X-Label}"
set ylabel "{Y-Label}"

set grid
set key box lt -1 lw 1
set pointsize 1.5

set border 0
set xtics nomirror
set ytics nomirror

plot "{Data}" using 1:2:xtic(3) title "{Line}" with lines lt 1 lw 2,"{Data}" using 1:2 notitle with points lt 3 lw 2 pt 4,f(x) title "{Trend}" lt 3 lw 2

Súbor uprava.dat obsahuje

{Data} = "input.csv"
{Title} = "Názov grafu"
{Output} = "output.png"
{X-Label} = "Popis osi X"
{Y-Label} = "Popis osi Y"
{Line} = "Popis grafovej čiary"
{Trend} = "Popis trendovej čiary"

A potrebujem template.gnuplot upraviť podľa uprava.dat. Dúfam, že ma chápete. Vopred veľmi pekne ďakujem za odpoveď.

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

Odpovědi

19.3.2012 22:49 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Sed (alebo niečo iné) a úprava jedného súboru iným
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ne že bych se chtěl smažit v pekle, ale:
cp template.gnuplot test.gnuplot
sed -e "s/^\({.*}\)\s*=\s*\"\(.*\)\"\s*$/sed -i -e \"s,\1,\2,\" test.gnuplot/" uprava.dat | bash
Určitě někdo napíše i korektní, slušné, dlouhodobě udržitelné řešení.
20.3.2012 08:51 Peter
Rozbalit Rozbalit vše Re: Sed (alebo niečo iné) a úprava jedného súboru iným

Ďakujem veľmi pekne. Ale mám jeden problém. Takýto je výsledok posledného riadku:

plot "input.csv" using 1:2:xtic(3) title "Popis grafovej čiary" with lines lt 1 lw 2,"{Data}" using 1:2 notitle with points lt 3 lw 2 pt 4,f(x) title "Popis trendovej čiary" lt 3 lw 2

Čiže to druhé {Data} nebolo zmenené. A po druhé, čumím na to ako puk, pozerám do manuálu, ale stále to neviem pochopiť. Bol by si taký dobrý a vysvetlil mi krok po kroku, že čo ten príkaz robí? Veľmi pekne ďakujem za tvoju pomoc a ochotu.

20.3.2012 09:15 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Sed (alebo niečo iné) a úprava jedného súboru iným
..., čumím na to ako puk, pozerám do manuálu, ale stále to neviem pochopiť.
To bola presne tá časť vety o smažení sa v pekle. :-)
wamba avatar 20.3.2012 09:35 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Sed (alebo niečo iné) a úprava jedného súboru iným

Čiže to druhé {Data} nebolo zmenené.

pravděpodobně bude stačit vhodně přidat g, tipuji sem \"s,\1,\2,g\"

A po druhé, čumím na to ako puk, pozerám do manuálu, ale stále to neviem pochopiť.

podstatou je, že nahradí {Data} = "input.csv" za s/{Data}/input.csv/ atd., a to pak použije na druhý soubor

autor to třeba vysvětlí podrobněji a přesněji

This would have been so hard to fix when you don't know that there is in fact an easy fix.
20.3.2012 10:27 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Sed (alebo niečo iné) a úprava jedného súboru iným
Nez v 2. kroku spustat 1000 sedov, mozno by bolo lepsie 1. sedom vyrobit len sed-script file a ten v 2. kroku cez sed -f vykonat.
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.