GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konvertieren Sie die Ausgabe von bash `ls` in ein json-Array

Wenn Sie wissen, dass kein Dateiname Zeilenumbrüche enthält, verwenden Sie jq:

ls | jq -R -s -c 'split("\n")[:-1]'

Kurze Erklärung der Flags zu jq:

  • -R behandelt die Eingabe als String statt als JSON
  • -s fügt alle Zeilen zu einem Array zusammen
  • -c erzeugt eine kompakte Ausgabe
  • [:-1] entfernt den letzten leeren String im Ausgabearray

Dies erfordert Version 1.4 oder höher von jq. Versuchen Sie Folgendes, wenn es bei Ihnen nicht funktioniert:

ls | jq -R '[.]' | jq -s -c 'add'


Ja, aber die Eckfälle und die Unicode-Handhabung werden Sie in den Wahnsinn treiben. Delegieren Sie besser an eine Skriptsprache, die dies nativ unterstützt.

$ ls
あ  a  "a"  à  a b  私
$ python -c 'import os, json; print json.dumps(os.listdir("."))'
["\u00e0", "\"a\"", "\u79c1", "a b", "\u3042", "a"]

Linux
  1. Konvertieren Sie die Ausgabe des Baumbefehls in das Json-Format?

  2. Ein Feld aus einem Json-Array in ein Bash-Array parsen?

  3. Wie erstelle ich ein Array eindeutiger Elemente aus einer Zeichenfolge/einem Array in Bash?

  4. Bash-Skript:Wie weist man jede Zeile der Befehlsausgabe Werten in einem Array zu?

  5. Bash erfasst die Ausgabe von awk in ein Array

Bash:In Datei schreiben

Bash-Arrays

Assoziatives Array in Bash

Wandeln Sie eine Ausgabe in einen String um

Konvertieren Sie eine Textzeichenfolge in Bash in ein Array

Verwenden von jq zum Abrufen des Schlüsselwerts aus der json-Ausgabe