聪明的方法来从文件中剪切一些行

问题描述:

我想弄清楚如何(没有临时文件)可以剪切,例如,2-10行的文件。聪明的方法来从文件中剪切一些行

基本上,我需要删除已输入但保留标题的CSV条目。

我相信有人在那里是悟性不够这个

您可以使用ed,标准编辑:

ed -s file.csv < <(printf '%s\n' '2,10d' 'wq') 

< <(printf ...)将推动ed做到以下几点:

  • 使用命令删除范围2-10中的行2,10d
  • 使用wq保存(w)并退出(退出q)。

您的ed版本可能会在wq上投诉;在这种情况下给它2个独立的命令(w然后q)像这样:

ed -s file.csv < <(printf '%s\n' '2,10d' 'w' 'q') 

否则,强制性sed方式:

sed -i '2,10d' file.csv 

这就像ed方式,不同之处sed并不是一个真正的文件编辑器:它使用(在窗帘后面)一个临时文件 - 所以它在技术上不能满足您的要求。

+1

在我的Debian系统上,如果我像你那样运行'ed'并检查它是如何处理的,我会在'/ tmp /'中创建一个临时文件来执行编辑操作。 – Louis 2014-11-01 00:36:27

+0

@Louis,true,编辑_do_使用临时文件':-D'。你是说我在这个答案中撒谎? '';-)。 – 2014-11-01 00:41:18

+2

嗯,我只是不想让亲爱的'sed'看起来不像'ed'。 :) – Louis 2014-11-01 00:43:06