Wpis z mikrobloga

Mirki z #programowanie #linux #bash

potrzebuję chałupniczą metodą wygenerować sobie pewien plik json z wartościami ze zmiennych w pliku tekstowym.
Chcę to potencjalnie odpalać na linuxie pod bashem, wiec nic wyszukanego, ma działać od strzała.

potrzebuję by json miał taki wpis:

"value":"[{\"attr_name\":\"network\"}]"
oto, jak próbuję to zrobić zwykłym printfem:

printf "\"value\":\"[{\"attr_name\":\"network\"}]\""
Problem pojawia się, gdy mam obok siebie znaki \"
przed każdym daje backslash jak przed znakiem specjalnym, przez co mam zlepek w postaci \"
I niestety bash mi to źle interpretuje, tj. ucina backslash przed cudzysłowem (tak jakby interpretował \ jak pojedynczy ``)

efekt jest taki:

"value":"[{"attr_name":"network"}]"
Dodam, że pracuję na Macu i domyślna powłoka zsh radzi sobie z tym poprawnie.

Jak osiągnąć taki efekt w bashu?
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@filip_k: niestety nie, ale jeśli jest to domyślnie zainstalowane, to warto się będzie pochylić.
Przy czym jeśli prosty bashowy trick istnieje, to też chciałbym go znać. Podejrzewam że sprawa trywialna, no ale brak doswiadczenia z takimi składańcami... :)
  • Odpowiedz
@tegie: wbrew pozorom bash to nie jest coś, co jest „domyślnie zainstalowane”. Często jest, ale w prawdziwym życiu nie możesz na tym polegać.
Czy tam jest cokolwiek, co nadaje się do obróbki tekstu? Perl, PHP, Python, Ruby?
Skrypty powłoki służą do uruchamiania narzędzi, używanie i pisanie narzędzi w skryptach powłoki to przepis na frustrację.
Nawet jak zadziała, to za rok nikt tego patykiem nie ruszy, żeby zrobić jakąkolwiek zmianę.
  • Odpowiedz
@tegie: Jakbyś miał pythona, a plik z zawartościami zmiennych wygląda tak:

klucz 1 = wartosc 1
klucz 2 = wartosc 2
to możesz uzyc tego
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
wbrew pozorom bash to nie jest coś, co jest „domyślnie zainstalowane”. Często jest, ale w prawdziwym życiu nie możesz na tym polegać.

Czy tam jest cokolwiek, co nadaje się do obróbki tekstu? Perl, PHP, Python, Ruby?


@wykopyrek: o gnutils pan nie słyszał? To wymienię na szybko: sort, tr, sed, awk, grep, cat, cut. Z perla się zaśmiałem, znasz kogoś w tych czasach kto umie perla?
  • Odpowiedz
o gnutils pan nie słyszał?


Ehh… „pan”. Toś mi przywalił.
Rozwiniesz, jak te narzędzia pomogą zrobić czytelny kod do klejenia jsonów?

to wymienię na szybko: sort, tr, sed, awk, grep, cat, cut.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@wykopyrek: najprostsze operacje na łańcuchach znaków czyli regrexy ogarnia właśnie sed bez problemów. Do jsonow nawet do inserta w plik jsonowy nowych zmiennych bez żenady można użyć jq. Szukasz dziury w całym na siłę.
  • Odpowiedz
@PortowySzczur: @wykopyrek @dict

Dzięki za sugestie. Problem już rozwiązany zgodnie z sugestią od @Saly

Zależało mi na prostym rozwiązaniu, bez konieczności doinstalowywania niczego, bo skrypt będzie potencjalnie do użytku na wielu systemach nienależących do mnie, więc nie zawsze mogę coś doinstalować.
Sam json też jest dosyć prosty i ma raptem z 300 linii. Ale takich pliczków tylko z róznymi danymi mogę mieć i kilkaset. Dane biorę z innego pliku
  • Odpowiedz