2012-02-13 40 views
10

我有一個問題,我試圖解決沒有成功。我必須將第n行的.txt文件的一部分複製到第n + y行(比方說1000到1000000)。這個文件非常大,所以我不能手動完成,所以我試圖用終端來做到這一點,但沒有成功。 現在我試圖與運營商和sed,沒有成功。這裏是什麼,我試圖複製:使用終端(或Shell)將文件的一部分複製/粘貼到另一個文件

sed的-n 「1000,1000000p」 路徑/首/文件>路徑/秒/文件

任何幫助,非常感謝;)

+1

沒有什麼錯,你的例子給sed命令;它以什麼方式失敗? – 2012-02-13 12:29:02

+0

如果輸入文件的行結尾不正確,則需要先將其轉換。試試'dos2unix'。 – tripleee 2012-02-14 11:11:46

回答

19

如果您知道源文件(wc -l)中有多少行,則可以這樣做..假設有12000行,並且您希望在新文件(共5000行)中包含2000 - 7000行。

cat myfile | tail -10000 | head -5000> newfile

閱讀最後的10k行,然後從中讀取第1條5k行。

+0

您不需要知道文件中有多少行:只需將頭放在首位即可。 – jfg956 2012-02-13 15:47:07

+0

如果你想先放尾巴,你可以使用'tail -n + 2000'。這也佔用較少的緩衝空間。 – jfg956 2012-02-13 15:52:56

+1

金光閃閃,無用的貓。另外,原來的'sed'命令對此很好。 – tripleee 2012-02-14 09:07:36

1

其實你的sed命令應該只是用單引號代替雙引號

相關問題