Bash - 内容全体を読み取らずにテキストファイルの先頭に文字列を追加するには?

Bash - 内容全体を読み取らずにテキストファイルの先頭に文字列を追加するには?

「test.txt」というテキストファイルの前に「hello world」という文字列を挿入しようとしています。これを行うためにsedを使用しましたが、残念ながら「sedコマンド」がファイル全体を読み取るとメモリが消えました。

私のファイルには1GBのテキストが含まれており、メモリは512MBしかありません。どうすればいいですか? 、このように:

echo --insert-before "hello world" >> test.txt

または、次のように挿入するにはどの演算子を使用する必要がありますか?

echo "hello world" << test.txt

それとも別のアイデアですか?

注:末尾にテキストを挿入する演算子は>>うまく機能します。メモリは消費されませんが、新しい行なしでテキストファイルの内容を上書きせずにファイルの先頭で逆の順序で実行する必要があります。

私が使用する実際のコードは次のとおりです。

echo "hello world" > test.txt;
echo "the large content that size is 1gb" >> test.txt;
sed -i ':a;N;$!ba;s/\n//g' test.txt;

ベストアンサー1

使用するコマンドの順序は次のとおりです。

echo "hello world" > test.txt;
echo "the large content that size is 1gb" >> test.txt;
sed -i ':a;N;$!ba;s/\n//g' test.txt;

私はこのコマンドが実際に次のようになると仮定します。

echo "hello world" > newfile;
cat test.txt >> newfile;            # assuming the file with 1GigaByte was test.txt

説明から改行を削除するためにのみ使用されるsedコマンドについて文句を言います。

tr(多すぎる)メモリを使用せずに同じことを行うことができます。

echo "hello world" > newfile;
cat test.txt | tr -d '\n' >> newfile

newfile「hello world」の前に付いたtest.txtのコピーがあります。

おすすめ記事