[LINUX] [Bash] Commande pour écrire des fichiers ligne par ligne dans un fichier de numéro de série [Une ligne (?)]

Je vais le laisser comme note de service aux fins de mémoire.

Contexte

・ Je souhaite enregistrer un certain fichier en unités d'une ligne et diviser les noms de fichiers en numéros de série. ・ Pour les numéros de série, je souhaite appliquer un remplissage à zéro afin que l'ordre d'affichage soit approprié. -Le fichier à fractionner faisait environ 4000 lignes ** ・ La chaîne de caractères dans la cible de division contient "", et je veux la laisser telle quelle. ← 2020/03/13 (ven) Addendum **

C'était un peu gênant de laisser le fichier en tant que script shell, donc je l'ai écrit pour qu'il soit complété avec juste une commande. (Au final, il semble que le contenu écrit dans le fichier shell n'a pas du tout changé ...)

Environnement d'exécution

$ bash --version
GNU bash,Version 4.4.20(1)-release (x86_64-pc-linux-gnu)

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"

Commande d'exécution

Avant amélioration


count=1 ; load_target="hogehoge.txt" ; cat ${load_target} | while read line ; do echo ${line} > "${load_target}_`printf \"%04d\" ${count}`.txt" ; count=`expr ${count} + 1` ; done

Dans ce qui précède, si "" est inclus dans la chaîne de caractères divisée, il sera lu comme un échappement et effacé. (Je traitais de données contenant des informations de balise HTML dans la partie valeur du format json, et cela s'est réellement produit ...)

** Si vous ne voulez pas être effacé, vous pouvez utiliser l'option -r de la commande read **

Après amélioration


count=1 ; load_target="hogehoge.txt" ; cat ${load_target} | while read -r line ; do echo ${line} > "${load_target}_`printf \"%04d\" ${count}`.txt" ; count=`expr ${count} + 1` ; done

En ce qui concerne l'extension et la partie de remplissage 0 au moment de la sortie, cela semble cool si vous concevez un peu plus et extrayez les informations de l'expansion variable et du fichier source de lecture, car il sera écrasé en fonction du nombre de lignes du fichier source de lecture. Pour le moment, ce qui précède a été résolu, j'espère donc pouvoir l'améliorer plus tard.

Avec One Liner, il existe des manières encore plus élégantes d'écrire! !! Je vous serais reconnaissant de bien vouloir nous donner votre avis pour des études ultérieures. .. ..

Recommended Posts

[Bash] Commande pour écrire des fichiers ligne par ligne dans un fichier de numéro de série [Une ligne (?)]
[python] Remplacez le nom du fichier image par un numéro de série
Comment mettre un numéro de ligne au début d'un fichier CSV
Comment écrire une instruction ShellScript Bash for
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
Lire ligne par ligne à partir d'un fichier avec Python
Je veux écrire dans un fichier avec Python
Comment écrire une instruction de cas bash ShellScript
[Python] Enregistrez les données vidéo importées par OpenCV sous forme de fichier jpg de numéro de série
Comment écrire une interface graphique à l'aide de la commande maya
Comment afficher une ligne spécifiée d'un fichier ou d'un résultat de commande sous Linux (sed, awk)
Comment exécuter un fichier Python à une invite de commande Windows 10
Je veux démarrer un environnement Jupyter avec une seule commande
Comme la date Excel lue par pandas.read_excel était une valeur de série, elle a été convertie en datetime.datetime.
Une doublure pour parler quelque part
Télécharger un fichier sur Dropbox
Lire et écrire des fichiers
Écrire et lire des fichiers
Comment faire une commande pour lire le fichier de paramètres avec pyramide
Comment obtenir une chaîne à partir d'un argument de ligne de commande en python
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Créez un outil de ligne de commande pour convertir des dollars en yens en utilisant Python