2013-05-06 109 views
1

我必须删除大文件中第n个位置的字符。 Vi挂起这样一个大文件。我知道sed会有一些简单的命令来做到这一点。但是,我发现很难理解sed脚本及其表达式。如何使用sed删除文件中的第n个字符

的文件我已经有内容,如:

{ “查询”: “锁定和”, “时间戳”: “2012-12-28T00:00:00.045000 + 00:00”, “的productId “:322506} ,, {” 查询“: ”天鹅绒易碎“, ”时间戳“: ”2012-12-28T00:00:00.045000 + 00:00“, ”的productId“:134363}

我必须删除那个额外的,,这是130405该字符在该文件中。我如何使用sed来实现这一点。

编辑:

现在我希望通过就地一个一个来代替双逗号的所有aoocurances。如何做到这一点?

回答

5

sed -i 's/.//130405' FILE

此编辑到位(-i)文件(FILE),在130405位置

+0

谢谢。它帮助了:D – user1542790 2013-05-06 17:58:16

+0

+1,我不知道为什么我写了这么多's/foo/bar/1,2,3'后忘了'130405' ! – Kent 2013-05-06 18:00:22

+0

如何消除逗号的所有双重逗号? – user1542790 2013-05-06 18:14:02

0

甚至没有担心究竟在何处双逗号,假设你要修复整个文件任何双逗号:

sed -e 's/,,/,/g' <file> file.new 
mv file.new file 

如果你有一个版本的sed支持它,你可以sed -i -e '...' file跳过重定向(但sed -i仍然基本上完全相同的事情,只是一个临时文件)。

+0

sed:无法重新分配内存..可能是由于文件的大小 – user1542790 2013-05-06 17:56:15

+0

这可以在原地完成吗? – user1542790 2013-05-06 18:13:25

+0

我不认为有任何方法可以使用标准的命令行工具来完成它。一个快速的C/Python /任何程序读取冒犯的额外字符后重新写入一个字节的部分不会太困难,但除非你需要经常这样做,否则这可能不是真正值得的努力... – twalberg 2013-05-06 18:30:18

2

,当你有cut为什么sed删除任何字符(.)?

cut -c -130404,130406- 
+0

我不明白为什么这不会回答这个问题。 'cut'是从各行删除多个字符的OP问题的完美解决方案。 – gsl 2016-11-03 11:36:44

相关问题