【问题标题】:file edit- commandline unix文件编辑 - 命令行 unix
【发布时间】:2013-03-24 01:23:40
【问题描述】:

我想从命令行编辑一个文件,因为在 vim 或其他编辑器中打开它需要很长时间(一个大文件)。我想在每一行的开头添加一个字符串('chr'),而不是用 # 注释掉。我使用的命令是这样的:

cat '/home/me/37.vcf' | sed s/^/chr/>'sp.vcf'

但它会在每一行的开头添加一个 chr,在每一行的末尾添加一个 >。我不希望这两种情况发生。 任何人都可以提供任何建议来改善我的结果吗?

【问题讨论】:

    标签: linux file unix sed


    【解决方案1】:

    仅对不以# 开头的行应用替换:

    sed '/^[^#]/s/^/chr/' file > output
    

    注意:cat 命令用于连接文件,这里没用。

    【讨论】:

    • 它不会在空行上添加chr。不确定 OP 是否希望这样。
    【解决方案2】:

    您可以在 sed 命令中出现语法错误。使用这个语法正确的 sed 命令:

    sed -E 's/^([^#]|$)/chr/' /home/me/37.vcf > sp.vcf
    

    或在 Linux 上:

    sed -r 's/^([^#]|$)/chr/' /home/me/37.vcf > sp.vcf
    

    【讨论】:

      【解决方案3】:

      这可能对你有用(GNU sed):

      sed '/^\s*#/!s/^/chr/' file > new_file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-16
        • 2014-02-14
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2013-11-20
        • 2010-10-30
        • 1970-01-01
        相关资源
        最近更新 更多