分割コマンドでcat出力を使用して出力ディレクトリを指定する

分割コマンドでcat出力を使用して出力ディレクトリを指定する

長いcsvをファイルごとに500行に分割しようとしています。出力ファイルが特定のディレクトリにあることを望み、csvの最初の行を省略したいと思います。

split以下をパイピングして、CSVの最初の行を使用して維持できますcat

cat file.csv | tail -n +2 | split -l 500

次のように出力ディレクトリを指定できます。

split -l 500 file.csv /mnt/outdir

しかし、次のようにしようとすると:

cat file.csv | tail -n +2 | split -l 500 /mnt/outdir

/mnt/outdirこれは私が分割したいファイルだと思い、私にsplit: /mnt/outdir: Is a directory

もしそうなら、split出力ディレクトリを指定しながら、どのように出力をコマンドにパイプすることができますか?

答え1

-入力ファイル名として使用されます。例えば

cat file.csv | tail -n +2 | split -l 500 - /mnt/outdir

しかし、ここではそうする必要はありませんcat

tail -n +2 file.csv | split -l 500 - /mnt/outdir

または以下を使用してください/dev/stdin

tail -n +2 file.csv | split -l 500 /dev/stdin /mnt/outdir

またはプロセスの交換:

split -l 500 <(tail -n +2 file.csv) /mnt/outdir

man split(GNUバージョン)から:

split [OPTION]... [FILE [PREFIX]]

説明する

PREFIXaa、PREFIXab、...に出力FILEフラグメント。デフォルトのサイズは1000行で、デフォルトのプレフィックスは「x」です。

FILE がない場合、または FILE が - の場合、標準入力を読み込みます。

書かれた方法でわかるように、[FILE [PREFIX]]PREFIXを使用すると、〜しなければならない入力ファイル名を入力します。 FILEとPREFIXの両方がオプションです。互いに独立、で書かれます[FILE] [PREFIX]

関連情報