![Ubuntu 终端将行号 N 从一个文件复制到另一个文件](https://linux22.com/image/969613/Ubuntu%20%E7%BB%88%E7%AB%AF%E5%B0%86%E8%A1%8C%E5%8F%B7%20N%20%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6.png)
我想知道是否可以将一个文本文件的第 7,8,9 行和第 17,18 行复制到另一个文本文件?
提前感谢!
答案1
您可以使用sed
(流编辑器)按数字选择性地打印行,例如
sed -n '7,9p;17,18p' oldfile > newfile
答案2
你应该不是依赖于文件中行的顺序,因为它可能会改变(如果它是系统文件、临时文件等,并且它已更新)。
您可以使用 grep 或其变体之一,例如 rgrep:
rgrep WordOrRegularExpressionToMatch "Name_of_the_file"
然后,在您看到打印机的行数正确后,您可以使用:
rgrep WordOrRegularExpressionToMatch "Name_of_the_file" >> "Name_of_the_second_file"
它会附加rgrep 打印的行被复制到第二个文件;要覆盖,请使用“>”而不是“>>”。
如果你真的想提取一组精确的线条您可以使用“sed”:
sed -n -e 7,9p -e 17,18p "Name_of_the_file"
(这是两个独立的间隔)
所以...
sed -n -e 7,9p -e 17,18p "Name_of_the_file" > "Another_file_to_overwrite"
(>> 附加> 复制并粘贴此行:它将完成这项工作。:-)
”男人“将为您提供更多帮助。
祝您有美好的一天!
答案3
如果您知道源文件中有多少行(wc -l),您可以这样做...假设有 12000 行,并且您希望新文件中有 2000 到 7000 行(总共 5000 行)。
cat myfile | tail -10000 | head -5000 > newfile
读取最后 10k 行,然后读取前 5k 行。