2013-04-02 3 views
0

Je veux éditer un fichier depuis la ligne de commande, car l'ouvrir dans vim ou d'autres éditeurs prend une éternité (un gros fichier). Je veux ajouter une chaîne ('chr') au début de chaque ligne qui n'est pas commentée avec un #. La commande J'utilise est la suivante:file edit- commandline unix

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

Mais il ajoute une chr au début de chaque ligne et> à la fin de chaque ligne. Je ne veux pas que l'une de ces choses se produise. Quelqu'un peut-il offrir des suggestions pour améliorer mes résultats?

Répondre

3

Pour appliquer la substitution aux seules lignes qui ne commencent pas par un #:

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

Remarque : la commande cat est destinée à la concaténation de fichiers, elle est inutile ici.

+0

Il ne sera pas ajouter 'chr' sur des lignes vides. Je ne sais pas si OP le veut ou non. – anubhava

0

Vous pouvez erreur de syntaxe dans votre commande sed. Utilisez cette commande sed syntaxiquement correct:

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

OU Linux:

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

Cela pourrait fonctionner pour vous (GNU sed):

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