Text-Processing

Bash - 如何在不讀取所有內容的情況下將字元串添加到文本文件的開頭?

  • November 23, 2019

我試圖在名為“test.txt”的文本文件之前插入一個字元串“hello world”,我已經用 sed 完成了,但不幸的是,“sed 命令”殺死了我的記憶,因為它讀取了整個文件。

我的文件包含一個 1gb 大小的文本,而我的記憶體只有 512 mb。我該怎麼做?,像這樣:

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;

您聲明您使用的命令序列是:

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 副本。

引用自:https://unix.stackexchange.com/questions/553767