2013-05-06 50 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

相關問題