LoginSignup
2
3

More than 5 years have passed since last update.

ファイルの1行を1ファイルに分割するシェルスクリプト

Last updated at Posted at 2016-02-25

データを1行ずつ別のファイルに分割するシェルスクリプト

unixのsplitコマンドでは、任意の行数でファイルを分割できますが、1,000行のファイルを1行ごとに1,000このファイルに分割させようとしたらできません。
そこでファイルが何行であろうと、1行ごとに分割するスクリプトを作成しました。

splitコマンドでやってみる。

testfile.datを1行毎に分割して、outで始まるファイルに出力

split -line 1 testfile.dat out

image
エラーになりました!

devide_record.shの使い方

splitコマンドの-line 1 と同じ感じで使います。

devide_record.sh 入力ファイル 出力ファイル名

シェルスクリプト ソース

devide_record.sh
#!/bin/sh
#INPUTFILEを読み、1行を1ファイルにして出力するスクリプト
#コマンドライン引数1個目 読み込みファイル名
#コマンドライン引数2個目 出力ファイル名の最初の文字列
INPUTFILE=$1
OUTPUTFILE=$2
x=0
while read line;do
# x=$(($x+1))とする
x=$(($x+1))
ofn=$OUTPUTFILE"_"${x}".dat"
echo $line >${ofn}
done < $INPUTFILE

確認する

入力ファイルのレコード数を確認する

wc -l 入力ファイル

出力ファイルの数を確認する(出力ファイル名の最初の文字列をoutにした場合)

ls out*.dat | wc -l

参考にしたページ

shigemk2さんのページを参考にさせていただきました<(_ _)>

どんな時にこのスクリプトが役に立つか?

例えばアンケート調査データの自由記述設問をRMeCabで形態素解析する場合の前処理

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3