Ich werde es als Memo zum Zweck des Memorandums hinterlassen.
・ Ich möchte eine bestimmte Datei zeilenweise speichern und die Dateinamen in Seriennummern unterteilen. ・ Bei Seriennummern möchte ich eine Null-Auffüllung anwenden, damit die Anzeigereihenfolge angemessen ist. -Die zu teilende Datei hatte ungefähr 4000 Zeilen ** ・ Die Zeichenkette im Teilungsziel enthält "", und ich möchte sie so lassen, wie sie ist. ← 2020/03/13 (Fr) Nachtrag **
Es war ziemlich mühsam, die Datei als Shell-Skript zu belassen, deshalb habe ich sie so geschrieben, dass sie nur mit einem Befehl abgeschlossen werden kann. (Am Ende scheint sich der in die Shell-Datei geschriebene Inhalt überhaupt nicht geändert zu haben ...)
$ 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)"
Vor der Verbesserung
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
Wenn oben "" in der geteilten Zeichenfolge enthalten ist, wird es als Escapezeichen gelesen und gelöscht. (Ich hatte es mit Daten zu tun, die HTML-Tag-Informationen im Werteteil des JSON-Formats enthielten, und es ist tatsächlich passiert ...)
** Wenn Sie nicht gelöscht werden möchten, können Sie die Option -r
des Befehls read
verwenden **
Nach der Verbesserung
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
In Bezug auf die Erweiterung und den 0-Auffüllteil zum Zeitpunkt der Ausgabe scheint es cool zu sein, wenn Sie etwas mehr entwickeln und die Informationen der Variablenerweiterung und der Lesequelldatei extrahieren, da diese entsprechend der Anzahl der Zeilen der Lesequelldatei zerkleinert werden. Das oben genannte Problem wurde vorerst gelöst, daher hoffe ich, dass ich es später verbessern kann.
Mit One Liner gibt es noch elegantere Schreibweisen! !! Ich wäre Ihnen dankbar, wenn Sie uns Ihre Meinung für spätere Studien mitteilen könnten. .. ..
Recommended Posts