Dieser Artikel ist der 12. Tagesartikel von Shell Script Adventskalender 2015.
Hier das Textformatierungstool "tse" von Python, erstellt von Mr. Ishimoto @atsuoishimoto Ich möchte vorstellen.
Sie können die Details verstehen, indem Sie sich die Folien ansehen, die auf der diesjährigen PyCon JP 2015 angekündigt wurden. tse - Textformatierungsdienstprogramm von Python
Sehr einfach Was ist tse? "Python soll für Einzeiler ungeeignet sein, aber ich möchte trotzdem Textverarbeitung oder Python machen." Als Antwort auf die Anfrage "CLI-Tools zum Ausführen von Operationen wie ** sed ** und ** awk ** in Python" ist.
Sie können es mit pip installieren.
pip install tse
Danach ist es meiner Meinung nach schneller, die eigentliche Verarbeitung zu sehen, daher werde ich einige davon behandeln.
https://blog.ueda.asia/?p=6454
Q1
Die folgenden Daten
$ cat data1 a 1 b 4 a 2 a 3 b 5
Lassen Sie es uns wie folgt konvertieren.
a 1 2 3 b 4 5
Wenn Sie über freie Kapazität verfügen, versuchen Sie das folgende JSON-Format. p>
{a:[1,2,3],b:[4,5]}
--end
können Sie den Schlüssel bzw. den Wert des Wörterbuchs ausgeben.$cat data1 | tse -b 'd={"a": "", "b": ""}' -s '' 'd[L1] = d[L1] + " " + L2' -e 'for k, v in sorted(d.items()):print(k + v)'
a 1 2 3
b 4 5
json
mit -modul
Option$cat data1 | tse -m json -b 'd={"a": [], "b": []}' -s '' 'd[L1].append(int(L2))' -e 'print(json.dumps(sorted(d.items())))'
[["a", [1, 2, 3]], ["b", [4, 5]]]
https://blog.ueda.asia/?p=6877
Q1 In der folgenden Datei ist die erste Spalte der Schlüssel und die zweite Spalte der Wert. Suchen Sie jedoch nach einem Schlüssel, der sowohl "Oton" - als auch "Okan" -Werte enthält.
$ cat text 001 Oton 001 Oton 001 Akan 002 Okan 003 Oton 003 Yakan 003 Okan 004 Okan 005 Oton 005 Mikan 005 Akan
-s
können Sie einen regulären Ausdruck angeben, der" Oton "oder" Okan "enthält.$uniq text | tse -s 'Oton|Okan' 'print L1' | uniq -d
003
https://blog.ueda.asia/?p=7146
Q2 Zwei natürliche Zahlen
$ echo 1 4
Nach der Ausgabe mit Echo wie
4 3 2 1 2 3 4
Versuchen Sie, die Zahlen dazwischen einzugeben.
$echo 1 4 | tse -s '' 'for s in range(int(L1), int(L2)+1)[::-1]: print(s)' 'for s in range(int(L1)+1, int(L2)+1): print(s)'
Ich habe versucht, tse grob zu verwenden, aber es wurde einfach, einen Liner mit der Syntax von Python zu schreiben, an die ich gewöhnt bin! Ich habe das Gefühl, dass ich mich an das Einzeilerfeld gewöhnen konnte, vor dem ich Angst hatte, es zu vermeiden ^^
Morgen ist [@zayarwinttun] an der Reihe (http://qiita.com/zayarwinttun)!
Recommended Posts