J'ai un fichier texte nommé xid.txt
:
xid: SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: SC32173 id: artf398402
xid: SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
J'ai besoin d'ajouter une chaîne 'PT_' avant 'SC48028', 'SC32173' ... ainsi de suite. La chaîne 'SC ...' peut commencer avec n'importe quelle combinaison peut être 'AC ...' ou 'DL ..'
Sortie requise:
xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
Si vous voyez la sortie ci-dessus, nous ne devons pas insérer «PT_» avant les chaînes qui commencent par «i», «p», «w» et «numérique». J'ai essayé quelques commandes de base pour mes besoins en utilisant insert / append dans sed.
text-processing
awk
sed
Subrat Sahoo
la source
la source
Réponses:
Avec awk :
Le résultat:
$2~/^[A-Z][A-Z]/
- si le 2ème champ commence par 2 lettres majusculesOu approche sed :
la source
awk '$2~/^[A-Z]{2}/{ $2="PT_"$2 }1' xid.txt > xid-tmp && mv xid-tmp xid.txt
ou utiliser ma deuxième approcheawk
(celle que vous avez généralement installée sur les systèmes Linux)-i inplace
vous permet de modifier un fichier en place, comme sed et perl-i
.-i inplace
(j'ai suggéré une approche unifiée avec lamv
commande pour que l'OP s'adapte à la portabilité). Quant à laBioinformatics beta
communauté: je viens de la rejoindre. Pourrait-il y avoir des tâches liées à la programmation / au traitement Linux / Python? Comment penses-tu?option sed
où
-i
éditer sur place-e
commande à exécuterla source