Skocz do zawartości

Sed I Zmienne Srodowiskowe


mitek

Rekomendowane odpowiedzi

Mam taki problem:

W pliku tekstowym plik.txt w niektorych miejscach sa wpisane zmienne bash'owe np.

....

pierwsza linia tekstu ${var1} ze zmiennymi ${var2}

druga ${var3} zmienna

...

 

W skrypcie shel'owym chcialbym zmienic wszystkie wystepowania zmiennych na ich wartosci.

 

Probuje robic to tak:

var1=XXX

var2=YYY

var3=ZZZ

echo "var1=${var1} var3=${var3} var3=${var3}"

./sed -e "s/\${\([a-z0-9_-]*\)}/$(echo \&)/g" plik.txt

 

Niestety nie dziala.

Dla utrudnienia dodam, ze nie moge uzyc do tego awk - tylko sed wchodzi w gre.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 weeks later...

Cześć

 

F10 i386:

 

[morg@gburdzy ~]$ var1=XXX
[morg@gburdzy ~]$ var2=YYY
[morg@gburdzy ~]$ var3=ZZZ
[morg@gburdzy ~]$ echo "var1=${var1} var3=${var3} var3=${var3}"
var1=XXX var3=ZZZ var3=ZZZ
[morg@gburdzy ~]$ ./sed -e "s/\${\([a-z0-9_-]*\)}/$(echo \&)/g" plik.txt
bash: ./sed: Nie ma takiego pliku ani katalogu
[morg@gburdzy ~]$ sed -e "s/\${\([a-z0-9_-]*\)}/$(echo \&)/g" plik.txt
var1=XXX
var2=YYY
var3=ZZZ
[morg@gburdzy ~]

 

 

Problem możesz mieć z "./" przed komendą sed.

 

M.

 

 

 

 

Edit:

 

Przyjrzyj się tej linii:

 

cat ERR_*.txt |awk '{print $2}' | cut -d'I' -d'_' -f2 | cut -d'_' -f1 | cat |sort -u | sed -e '/^$/d' | cut -d'2' -f1 | cut -d'1' -f1

 

Przerabia plik:

 

Tabela INPA1000: Zbyt ma?o p˘l (12 zamiast 13)
Tabela INPA1000: Brak pola id_tr_def_
Tabela OPOL1000: Zbyt ma?o p˘l (34 zamiast 35)
Tabela OPOL1000: Brak pola Kanal
Tabela SLOP1000: Zbyt ma?o p˘l (13 zamiast 14)
Tabela SLOP1000: Brak pola TrescDekretu
Tabela UZYT1000: Zbyt ma?o p˘l (118 zamiast 128)
Tabela UZYT1000: Brak pola Adres$UlicaPrefix
Tabela UZYT1000: Brak pola Adres$UlicaNazwa
Tabela UZYT1000: Brak pola Adres$NrDomu
Tabela UZYT1000: Brak pola Adres$NrLokalu
Tabela UZYT1000: Brak pola Adres$Poczta
Tabela UZYT1000: Brak pola AdresKoresp$UlicaPrefix
Tabela UZYT1000: Brak pola AdresKoresp$UlicaNazwa
Tabela UZYT1000: Brak pola AdresKoresp$NrDomu
Tabela UZYT1000: Brak pola AdresKoresp$NrLokalu
Tabela UZYT1000: Brak pola AdresKoresp$Poczt

 

do czytelnej (dla mnie) postaci:

 

INPA
OPOL
SLOP
UZYT

 

 

W swoim przypadku możesz spokojnie odpuścić awk. U mnie, wyciąga 2-gą kolumnę.

 

 

 

M.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...