0

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

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

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

4

3 回答 3

3

要将替换仅应用于不以 a 开头的行#

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

注意:该命令cat用于连接文件,此处无用。

于 2013-04-02T16:35:02.710 回答
0

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

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

或者在 Linux 上:

sed -r 's/^([^#]|$)/chr/' /home/me/37.vcf > sp.vcf
于 2013-04-02T16:33:58.657 回答
0

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

sed '/^\s*#/!s/^/chr/' file > new_file
于 2013-04-02T19:01:29.180 回答