Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

【bash】ファイルを1行ずつ連番ファイルに書き出すコマンド【ワンライナー(?)】

$
0
0

備忘目的のメモ程度で残します。

背景

・あるファイルを1行単位で、かつファイル名は連番で分割保存したい
・連番については、表示順が適切になるようにゼロパディングをかけたい
・分割対象のファイルは4000行程度であった

シェルスクリプトとしてファイルを残すのもなんだか面倒だったので、コマンドだけで完結するように書いてみました。
(結局シェルファイルに書き出す内容と何ら変わっていないような気もしますが…)

実行環境

$ bash --version
GNU bash, バージョン 4.4.20(1)-release (x86_64-pc-linux-gnu)

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

実行コマンド

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

出力時の拡張子や0パディングの部分に関しては、もう少し工夫して変数展開や読み込み元ファイルの情報を抜き出しつつやった方が、読み込み元ファイル行数に合わせて潰しが効くし格好良さそうですが、とりあえず上記でも何とかなったので改良は後々できればいいかな程度です。

ワンライナーならもっともっとエレガントな書き方あるよ!!という方は後学のため是非ご意見頂けますと嬉しいです。。。


Viewing all articles
Browse latest Browse all 2722

Trending Articles