ファイルBの最初の行の上にファイルAの行を挿入する方法

ファイルBの最初の行の上にファイルAの行を挿入する方法

私はこの問題を経験しており、オンラインで検索しても結果がないので、ここで助けを求めたいと思います。

約80,000,000行のファイルがあります。私の使命は、それらをそれぞれ500,000行のファイルに分割することです。いいですね。私が使用するコードは次のとおりです。

#split -l 500000 myfile segment

質問1:ところで、その後は具体的な業務があります。元のファイルの最初の行はですID。この行を上部のすべてのパーティションファイルにコピーする必要があります(すべてのパーティションファイルの最初の行にこのID行があるように)。

私はコードを試しました:

#sed -n 1,1p originalFile >> splitFile

何とか作業を行いますが、ID各分割ファイルの一番下に行を追加します。ID各分割ファイルの一番上(最初の行)にこの行を配置するコードがあれば幸いです。

質問2(btw)。私は薬を持っています。 170個の分割ファイル。各分割ファイルの上部にID行を追加するループを作成できますか?

すべての提案に感謝します!

ベストアンサー1

注文

$ sed -n "1,1p" originalFile >>splitFile

splitFile>>シェルに通知するために Since の末尾に ID を追加します。追加ファイルにストリーミングします。終了する前にsed8000万行がすべて処理されるため、速度も非常に遅くなります。originalFile

分割すると、xaa等の名前で約160個のファイルが生成されます。ソースファイルのヘッダーを段階的にこのファイルに追加しましょうxabxac

head -n 1 originalFile >id_line.txt

for f in x??; do
  cat id_line.txt "$f" >tmpfile && mv tmpfile "$f"
done

rm id_line.txt

最初のコマンドは最初の行をoriginalFile独自のファイルに抽出しますid_line.txt

splitこのループはデフォルトのプレフィックスなどを使用したと仮定し、生成されたすべてのファイルを繰り返し、id_line.txt分割ファイルを名前付きファイルにリンクしますtmpfile。成功したら、tmpfile分割ファイルを置き換えます。

最後の行はid_line.txt今、その目的を達成したものを削除します。

おすすめ記事