文件编辑 - 命令行unix

时间:2013-04-02 16:30:54

标签: linux file unix sed

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

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

但它在每行的开头添加了一个chr,并且>到每一行的结尾。我不希望这些事情发生。 有人可以提出任何建议来改善我的结果吗?

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

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

在Linux上的OR:

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

答案 2 :(得分:0)

这可能适合你(GNU sed):

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