ubuntuusers.de

jc

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

jc ist ein in Python geschriebenes Programm, welches die Ausgabe von über 100 gängigen/populären Kommandozeilenprogrammen nach JSON 🇬🇧 oder alternativ YAML konvertiert. Dies ist besonders praktisch, wenn man die Ausgabe mit Tools wie jq weiter bearbeiten möchte. Außerdem kann jc auch csv-Dateien als Eingabe nehmen und diese dann nach JSON konvertieren.

Außer für Linux ist jc auch für Windows und macOS verfügbar.

Installation

aus den Paketquellen

jc ist in den Paketquellen ab Impish enthalten[1]:

  • jc (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install jc 

Oder mit apturl installieren, Link: apt://jc

Allerdings ist die Programmversion in den Paketquellen je nach Ubuntu-Version (ziemlich) alt, so dass eine manuelle Installation vorzuziehen ist.

Paket manuell installieren

Auf der Release-Seite des Projekts gibt es ein fertiges DEB-Paket, dass man manuell installieren kann[2].

Hinweis!

Fremdpakete können das System gefährden.

über pip

Der Python-Paketmanager pip stellt häufig aktuellere Versionen von Programmen als in den Paketquellen bereit. Folgendermaßen lässt sich das Programm darüber installieren:

pip3 install jc       # Programm wird nur für den aktuellen Nutzer installiert  

Ab Ubuntu 23.04 muss in eine virtuelle Umgebung für Python installiert werden:

python3 -m venv venv-name && source venv-name/bin/activate # venv-name durch den gewünschten Namen ersetzen
pip3 install jc       # Programm ist nur bei aktiver virtueller Umgebung nutzbar  

Hinweis!

Fremdsoftware kann das System gefährden.

Benutzung

Die allgemeine Syntax von jc ist:

KOMMANDO | jc PARSER [OPTIONEN] 

KOMMANDO ist dabei der Befehl, der die Eingabe für jc liefert. PARSER teilt jc mit, welches Programm die Eingabe liefert, wodurch jc weiß, wie die Eingabe zu verarbeiten und konvertieren ist.

Beispielsweise liefert der Befehl

uname -a | jc --uname 

die folgende Ausgabe:

1
{"kernel_name":"Linux","node_name":"thinkbook15","kernel_release":"5.15.0-37-generic","operating_system":"GNU/Linux","processor":"x86_64","hardware_platform":"x86_64","machine":"x86_64","kernel_version":"#39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022"}

Eine Übersicht über alle Befehle, deren Ausgabe jc zu JSON konvertieren kann, liefert der Aufruf von

jc -h 

oder alternativ der Abschnitt "Parsers" auf der Projektseite.

jc kennt eine Reihe von Optionen, von denen zwei besonders interessant sind: die Option -p formatiert die Ausgabe mit sinnvollen Zeilenumbrüchen besser. Der obige Befehl in Kombination mit der Option -p liefert die folgende Ausgabe:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "kernel_name": "Linux",
  "node_name": "thinkbook15",
  "kernel_release": "5.15.0-37-generic",
  "operating_system": "GNU/Linux",
  "processor": "x86_64",
  "hardware_platform": "x86_64",
  "machine": "x86_64",
  "kernel_version": "#39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022"
}

Möchte man die Ausgabe in YAML statt JSON, muss man die Option -y nutzen. Die Ausgabe sieht dann so aus:

1
2
3
4
5
6
7
8
9
---
kernel_name: Linux
node_name: thinkbook15
kernel_release: 5.15.0-37-generic
operating_system: GNU/Linux
processor: x86_64
hardware_platform: x86_64
machine: x86_64
kernel_version: '#39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022'

Wie weiter oben gesagt, kann jc auch CSV nach JSON konvertieren. Beim Einlesen einer CSV-Datei erkennt jc den Delimiter automatisch, zumindest dann, wenn es sich um einen gängigen Delimiter wie das Komma , oder das Semikolon ;oder einen Tabulator handelt.

Die folgende Datei

1
2
3
4
Name;Version;LTS/STS;Erscheinungsdatum;Supportende
Jammy Jellyfish;22.04;LTS;21. April 2022 ;April 2027
Impish Indri;21.10;STS;14. Oktober 2021;14. Juli 2022
Focal Fossa;20.04;LTS;23. April 2020;April 2025

konvertiert jc wie folgt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[
  {
    "Name": "Jammy Jellyfish",
    "Version": "22.04",
    "LTS/STS": "LTS",
    "Erscheinungsdatum": "21. April 2022 ",
    "Supportende": "April 2027"
  },
  {
    "Name": "Impish Indri",
    "Version": "21.10",
    "LTS/STS": "STS",
    "Erscheinungsdatum": "14. Oktober 2021",
    "Supportende": "14. Juli 2022"
  }
  {
    "Name": "Focal Fossa",
    "Version": "20.04",
    "LTS/STS": "LTS",
    "Erscheinungsdatum": "23. April 2020",
    "Supportende": "April 2025"
  }
]

Auf der Projektseite im Abschnitt Examples sind eine ganze Reihe weiterer Beispiele zu finden, wie jc die Ausgabe diverser Programme nach JSON konvertiert.

Diese Revision wurde am 22. Juli 2022 22:48 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung, Python, Shell, JSON, YAML