Text-Processing
Bash - 如何在不讀取所有內容的情況下將字元串添加到文本文件的開頭?
我試圖在名為“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 副本。