我有一个 7GB 文本文件,
我需要编辑该文件的前 n 行(假设 n=50)
我想按以下方式执行此操作:
head -n 50 myfile >> tmp
vim tmp # make necessary edits
substitute first 50 lines of myfile with the contents of tmp
rm tmp
我该如何完成这里的第三步?还赞赏对一般问题的更好解决方案注意:此环境中没有 GUI
答案1
man tail
说:
-n, --lines=[+]NUM
output the last NUM lines, instead of the last 10;
or use -n +NUM to output starting with line NUM
因此你可以做
tail -n +51 myfile >>tmp
答案2
进行备份
cp fileorig.txt fileold.txt
复制 tmp.txt 中的 50 行
head -n 50 fileorig.txt > tmp.txt
使用 vim 进行必要的编辑
vim tmp.txt
为了让 3d 东西做到这一点
首先用sed删除前50行
sed -i 1,50d fileorig.txt
然后在 newfile 中 cat tmpedited+fileorig.txt
cat tmp.txt fileorig.txt > filenew.txt
如果您喜欢,请参阅 filenew.txt 如果出现问题恢复备份
cp fileold.txt fileorig.txt
答案3
找到了解决方案
head -n 50 myfile > tmp
vim tmp # make necessary edits
cat tmp > result
tail -n 50 myfile >> result
# result now contains the edited myfile