【Linux】【Bash】ファイルを行の途中で分割せず指定した数に分割したい

やりたいこと

ファイルをsplitコマンドで指定した数に分割したところ、行の途中で分割されてしまった。

% split -n 2 split.txt split_

分割後のファイルは後続処理の入力データとなるが、このままでは使用できない。

そこで、ファイルを行の途中で分割せずに指定した数に分割したい。

方法

splitコマンドには分割数を指定するnオプションがあるが、分割ルールについても設定できる。

サンブルには以下を使用する。

% cat split.txt
1234567890
abcdefghij
あいうえお

-n l/{数字}

nオプションにl/{数字}を指定した場合、行の途中で分割させずに指定した行数に分割できる。

% echo -e "0123456789\nabcdefghij\nあいうえお" > split.txt
% split -n l/2 split.txt split_

% tail split*
> split_aa <==
0123456789
abcdefghij

==> split_ab <==
あいうえお

==> split.txt <==
0123456789
abcdefghij
あいうえお

-n {数字}

l/を付けない場合、行の途中で分割される。

% echo -e "0123456789\nabcdefghij\nあいうえお" > split.txt
% split -n 2 split.txt split_

% tail split*
==> split_aa <==
0123456789
abcdefgh
==> split_ab <==
ij
あいうえお

==> split.txt <==
0123456789
abcdefghij
あいうえお

コメントを残す

メールアドレスが公開されることはありません。