Estoy trabajando con datos GWAS, Mis datos se ven así:
IID, kgp11004425, rs11274005, kgp183005, rs746410036, kgp7979600 1 00 AG GT AK 00 32 AG GG AA 00 AT 98 TT AA 00 AG AA 3 GG AG 00 GT GGSalida deseada:
IID, kgp11004425, rs11274005, kgp183005, rs746410036, kgp7979600 1 N/A AG GT AK N/A 32 AG GG AA N/A AT 98 TT AA N/A AG AA 3 GG AG N/A GT GGAquí estoy tratando de reemplazar "00" con "N/A", pero como tengo 00 en la primera fila o en la fila del encabezado, también se reemplaza aquí como kgp11N/A4425, rs11274N/A5,kgp183N/A5... comando bash que usé:
sed 's~00~N/A~g' allSNIPsFinaldata.csv¿Puede alguien ayudarme a "cómo no incluir / omitir la primera fila o la fila del encabezado y aplicar este efecto? Por favor, ayuda
Con 2 grupos de captura puedes usar este sed :
sed -E 's~(^|[[:blank:]])00([[:blank:]]|$)~\1N/A\2~g' file IID, kgp11004425, rs11274005, kgp183005, rs746410036, kgp7979600 1 N/A AG GT AK N/A 32 AG GG AA N/A AT 98 TT AA N/A AG AA 3 GG AG N/A GT GGDetalles:
(^|[[:blank:]]) : Inicio de coincidencia o un espacio en blanco en el grupo de captura #100 : Partido 00([[:blank:]]|$) : Fin del partido o un espacio en blanco en el grupo de captura #2\1N/A\2 : Reemplazo para devolver el valor del grupo de captura #1 seguido de N/A seguido del valor del grupo de captura #2Puede especificar una dirección para seleccionar la(s) línea(s) a las que aplicar el comando. Por lo tanto, puede optar por excluir la primera línea de esta manera:
sed '1!s~00~N/A~g' allSNIPsFinaldata.csvComo nota al margen, me gustaría señalar que su ejemplo no es en realidad CSV a pesar del nombre del archivo; su encabezado está delimitado por comas, pero el resto del archivo usa espacios.
También puede omitir la primera fila a partir de la segunda:
sed '2,$s~00~N/A~g' allSNIPsFinaldata.csv Si no desea coincidencias de palabras parciales, puede implementar límites de palabras alrededor del 00 de diferentes maneras .