最初のチャンクに、より多くの行を含むチャンクにファイルを分割します。

最初のチャンクに、より多くの行を含むチャンクにファイルを分割します。

4100行を含む大容量ファイルを分割しようとしています。 6行の数字をファイルで区切り、他の行は4行の数字をファイルに従う必要があります。次の点を考慮してください。

Bashスクリプトを書くには?

ベストアンサー1

あなたは試すことができますawk

awk '{if (NR>6){if ((NR-6)%4==1){++c}} else {c=1}};{print >"file"c".las"}' infile

設定gnuと比較的最新バージョンの使用split サフィックスを追加できます。次のようにすることもできます。

{ printf %s\\n\\n; cat infile; } | split -d -l 4 --additional-suffix='.las' - file
( set ./*.las
sed '1d
s/\\/&&/g
2c\
1i\\
3s/$/\\/' "$1" | sed -f - -i "$2"
rm -f "$1" )

つまり、2つの空行を印刷してファイルを印刷し、結合された出力を4行に分割し、元の入力の最初の2行をsed2番目の部分に挿入し(存在する場合はバックスラッシュをエスケープした後)、最後に最初の2行をエスケープします。部分を削除します。 。ただし、これを行うとブロック名がゼロパディングされるため、最終的には次のようなfile0001.las結果が発生することに注意してください。

おすすめ記事