Cet article est l'article du 12ème jour du Shell Script Advent Calendar 2015.
Ici, l'outil de formatage de texte "tse" par Python créé par M. Ishimoto @atsuoishimoto Je voudrais présenter.
Vous pouvez comprendre les détails en regardant les diapositives annoncées au PyCon JP 2015 de cette année. tse - Utilitaire de formatage de texte par Python
Très simplement Qu'est-ce que la tsé? "On dit que Python ne convient pas pour une seule ligne, mais je veux toujours faire du traitement de texte ou Python." En réponse à la demande "Outils CLI pour effectuer des opérations telles que ** sed ** et ** awk ** en Python" est.
Vous pouvez l'installer avec pip.
pip install tse
Après cela, je pense qu'il est plus rapide de voir le traitement réel, je vais donc en couvrir certains.
https://blog.ueda.asia/?p=6454
Q1
Les données suivantes
$ cat data1 a 1 b 4 a 2 a 3 b 5
Convertissons-le comme suit.
a 1 2 3 b 4 5
Si vous avez la capacité disponible, essayez le format JSON suivant. p>
{a:[1,2,3],b:[4,5]}
--begin
--end
, vous pouvez afficher respectivement la clé et la valeur du dictionnaire.$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.dumps ()
le dictionnaire à la finjson
avec l'option -module
$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 Dans le fichier suivant, la première colonne est la clé et la deuxième colonne est la valeur, mais recherchez une clé qui a à la fois les valeurs «Oton» et «Okan».
$ 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
, vous pouvez spécifier une expression régulière qui inclut" Oton "ou" Okan ".$uniq text | tse -s 'Oton|Okan' 'print L1' | uniq -d
003
https://blog.ueda.asia/?p=7146
Q2 Deux nombres naturels
$ echo 1 4
Après la sortie avec un écho comme
4 3 2 1 2 3 4
Essayez de remplir les nombres entre les deux.
for
.$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)'
J'ai essayé d'utiliser tse à peu près, mais il est devenu facile d'écrire un one-liner avec la syntaxe de Python à laquelle je suis habitué! J'ai l'impression que j'ai pu m'habituer au terrain à une ligne que j'avais peur d'éviter ^^
Le tour de demain est @zayarwinttun!
Recommended Posts