使用终端(或Shell)将文件的一部分复制/粘贴到另一个文件中

13

我正在尝试从第n行到第n+y行(假设是1000到1000000)复制一个.txt文件的部分内容。

我用了操作符和sed,但都失败了。这是我尝试的命令:

sed -n "1000, 1000000p" path/first/file > path/second/file

1
在您提供的示例中,sed命令没有任何问题;它以何种方式失败了? - William Pursell
1
如果输入文件具有不正确的行尾,您需要先进行转换。尝试使用 dos2unix - tripleee
2个回答

24

如果你知道源文件有多少行(使用 wc -l 命令),那么你可以这样做... 假设源文件有 12000 行,你想要在新文件中提取第 2000 行到第 7000 行之间的内容(共 5000 行)。

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

读取最后的 10000 行,然后从中读取前 5000 行。


1
你不需要知道文件中有多少行:只需先放头。 - jfg956
1
如果你想先放尾部,可以使用 tail -n +2000。这样也会占用较少的缓冲空间。 - jfg956
4
闪闪发光,猫的无用使用。此外,原始的“sed”命令对于此问题已经足够好了。 - tripleee
谢谢大家的回答,sed和cad命令都有效果。 - WarioBrega

3

sed 命令应该可以正常工作,将双引号替换为单引号。

sed -n '1000, 1000000p' path/first/file > path/second/file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接