![如何更改大型文本文件中的几个字符](https://linux22.com/image/1489359/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%E5%A4%A7%E5%9E%8B%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%87%A0%E4%B8%AA%E5%AD%97%E7%AC%A6.png)
我有一个大文件file.dat
,一个 CSV 格式的数据库转储,如下所示:
file_id,line_id,st_x,st_y,value1,value2,...value100
111111,1,22.22222,33.33333,0.1234567,0.246890,0.369258,...
.....
它有几百万行。
突然我意识到我想改变列的名称:st_x
改为lon
和st_y
。lat
仅在我的计算机上复制文件就需要一些时间,比如说T_copy
几秒钟。
使用编辑文件
sed -i 's/st_y/lat/' file.dat
需要T_sed
几秒钟T_sed ~ 1.7 T_copy
。
有没有更快的方法?如果替换字符串必须具有与目标字符串相同的字符数,我不会介意。
笔记:我确信这个问题以前已经被问过,只是不知道如何找到它。
答案1
我建议使用午夜指挥官的查看器(F3 或 mcview)查看该文件,然后
- 按F4(十六进制),
- 按F2(编辑),
- 按下Tab可将光标跳转到查看器的文本列,
- 将光标定位到要覆盖的字符上,然后输入新值,用空格填充旧值的剩余部分,
- 按下F6(保存)
- 按F10(退出)