Tengo un archivo de texto llamado 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
Necesito agregar una cadena 'PT_' antes de 'SC48028', 'SC32173' ... etc. La cadena 'SC ...' puede comenzar con cualquier combinación puede ser 'AC ...' o 'DL ..'
Salida requerida:
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 ve el resultado anterior, no debemos insertar 'PT_' antes de las cadenas que comienzan con 'i', 'p', 'w' y 'numerical'. He probado algunos comandos básicos para mi requerimiento usando insert / append en sed.
text-processing
awk
sed
Subrat Sahoo
fuente
fuente
Respuestas:
Con awk :
La salida:
$2~/^[A-Z][A-Z]/
- si el segundo campo comienza con 2 letras mayúsculasO enfoque de sed :
fuente
awk '$2~/^[A-Z]{2}/{ $2="PT_"$2 }1' xid.txt > xid-tmp && mv xid-tmp xid.txt
o use mi segundo enfoqueawk
(la que generalmente tiene instalada en los sistemas Linux)-i inplace
que le permite editar un archivo en su lugar, como sed y perl's-i
.-i inplace
(he sugerido un enfoque unificado conmv
comando para que el OP se ajuste a la portabilidad). En cuanto a laBioinformatics beta
comunidad: me acabo de unir. ¿Podría haber tareas relacionadas con la programación / procesamiento de Linux / Python? ¿Cómo crees que?opción sed
dónde
-i
editar en su lugar-e
comando para ejecutarfuente