ワンパスソリューションの場合、次のように使用できますawk
。
awk 'NR%100==1 { ++i } { print $0 (NR%100==0 ? "\nFFFFFF" : "") > "outputfile" i ".txt" }' file.txt
また、ここでの利点は、出力ファイル名をより細かく制御して、よりきれいにすることです。もっと凝ったものが必要な場合はお知らせください。乾杯。
user1937の説明:
モジュロ演算子に精通している場合はNR%100==1
、1行目、101行目、201行目、301行目などに対してtrueを返します。trueになるたびに、変数i
がインクリメントされます。awk
ステートメントが条件/アクションブロックで構成されていることに注目してください。NR%100==1
条件++i
もアクションもそうです。次に気付くのは(うまくいけば)、印刷アクションを持つブロックに条件がないことです。したがって、入力のすべての行が(常に)印刷されます。の値はi
、出力が印刷されるファイルを決定するだけです。
あなたがよく知らないかもしれないもう一つのビットは次のとおりです:(NR%100==0 ? "\nFFFFFF" : "")
。これは、
次の省略形の3項演算子if (NR%100==0) print "\nFFFFFF"; else print "")
です。HTH。
awk
コードは、次の形式のパターン/アクションステートメントを使用して構築できます。
NR%100==1 # pattern1
{
++i # action1
}
{
print $0 ... # action2
}
ご覧のとおり、pattern1はaction1にのみ適用されます。pattern1はaction2には適用されません。