題 從巨大的文本文件中刪除不需要的行的最簡單方法


我有一個大小超過30兆字節的大文本文件。我想刪除所有與某些特定條件不匹配的行,例如沒有字符串'START'的行。

最簡單的方法是什麼?


2
2018-06-03 01:45


起源


您使用什麼操作系統? - Unfundednut
@MrStatic:MacOS - Shawn


答案:


如果模式真的那麼簡單, grep -v 將工作:

grep -v START bigfile.txt > newfile.txt

newfile.txt將包含bigfile.txt中的所有內容,除了帶有“START”的行。

(如果不明顯,這是你在終端或其他命令行工具中做的事情)


3
2018-06-03 02:02





原始問題詢問如何刪除與模式不匹配的行。換句話說,如何保持與模式匹配的線條。因此,沒有必要 -v

grep START infile.txt > outfile.txt

請注意,grep可以使用正則表達式來執行更強大的模式匹配。但語法有點遲鈍。


2
2018-06-03 02:49





使用GNU sed -i 論點。


1
2018-06-03 01:51



更多地回答..詳細:“sed -n -e'/ START / p'inputfile”。也許最好不要在使用文件更改命令時使用-i,以防萬一。 - akira


grep -v START inputfile

應該管用。 grep 是MacOS和Linux / Unix的標準配置,可以安裝在MS Windows上。

選項 -v 是為了verting匹配 - 僅包含不包含模式的輸出行(與通常的grep行為相反)。


1
2018-06-03 02:02





對於Windows命令提示符(help find 選項):

find / v“START”original_file.txt> new_file.txt

對於Linux,OS X等(man grep 選項):

grep -v“START”original_file.txt> new_file.txt

用於更複雜的文本匹配 grep 提供了比功能更多的功能 find。如果你在Windows上,你可以很容易地找到一個端口 grep 或者你可以使用Windows' findstr 代替 find


1
2018-06-03 02:03