【问题标题】:Unix script to remove the first line of a CSV file用于删除 CSV 文件第一行的 Unix 脚本
【发布时间】:2012-03-26 20:21:29
【问题描述】:

我之前已经说过,我不太擅长编写脚本,所以我在下面将文件从共享目录复制到我更改权限的地方。但后来我想删除每个 CSV 文件中的第一行——标题——然后我想让它每小时运行一次。

cd /users
scp dehpc14_Disk_Quota_Report.csv /h/u544835
scp dehpc14_User_Disk_Usage.csv /h/u544835
cd /h/u544835
chmod 755 dehpc14_Disk_Quota_Report.csv
chmod 755 dehpc14_User_Disk_Usage.csv

* 在此处插入删除 csv 第一行 *

谁能帮我删除 CSV 文件的第一行并让它每小时自动运行一次,或者指导我找到一些我可能理解的东西来破解它?

【问题讨论】:

    标签: unix csv vi


    【解决方案1】:

    您可以使用sed 删除文件的第一行:

    sed -i '' 1d file.csv
    

    如果您只想获取文件的内容而不需要第一行,并且修改文件,请删除 -i '' 标志:

    sed 1d file.csv
    

    这里 1d 是要执行的命令:

    • 1 => 在哪里行动
    • d => 删除

    所以 1d 表示“删除第 1 行”

    如果你想得到第一行,你也可以使用 sed:

    sed -n 1p file.csv
    

    这里 p 代表“打印”或

    sed 1q file.csv
    

    (见 William Pursell 的评论)

    【讨论】:

    • 非常感谢您的回答和解释
    • 'sed 1p file.csv' 示例将打印第一行两次,每隔一行打印一次。要仅打印第一行,您需要 'sed -n 1p'(尽管更常见的是执行 'sed 1q' 并在打印一行后退出。)
    • 请注意,此答案仅适用于 GNU sed;它不适用于 BSD sed,也可以在 Mac OS X 上找到。BSD sed 需要在 -i 之后加上后缀;如果您不想要后缀,请使用-i ''(带空格)。但是手册页明确建议不要这样做。有关详细信息,请参阅Unix script to delete the first line on a Mac。其他 Unix 系统(AIX、HP-UX、Solaris 等)可能根本没有-i 选项; sed 的 POSIX 规范没有强制要求
    • @RKR 这应该不会花很长时间(也许如果你有一个很大的文件)。您的文件大小和完成时间是多少?究竟使用哪个命令?
    • 对于收到错误 1d: no such file or directory 的人,请改为 sed -i '1d' filename.csv
    【解决方案2】:

    我试图从 CSV 中删除第一行,cd 到该位置,然后问题的答案对我不起作用,正在获取

    sed: 无法读取 1d: 没有这样的文件或目录

    所以,我使用了 @amit 的以下声明 here

    sed -i '1d' filename.csv
    

    【讨论】:

      【解决方案3】:

      要创建不带标题的新 CSV 文件,您可以执行以下操作:

      sed 1d file_with_header.csv > file_without_header.csv
      

      【讨论】:

        【解决方案4】:

        在寻找这个答案时,我还发现了这个其他线程。他们在那里说使用tail,它实际上并没有进行OP想要的修改。您可以在课程中复制到临时文件。此外,如果您要将文件流式传输到另一个工具中,您可以在管道中使用“tail”,而不必写入临时文件或写入磁盘。

        How can I remove the first line of a text file using bash/sed script?

        【讨论】:

          猜你喜欢
          • 2015-06-11
          • 1970-01-01
          • 1970-01-01
          • 2015-03-11
          • 1970-01-01
          • 2021-08-10
          • 1970-01-01
          • 2014-06-30
          • 2010-09-25
          相关资源
          最近更新 更多