es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reemplace la cadena que se encuentra dos líneas antes del patrón coincidente.

Tengo un archivo config.js grande y me gustaría reemplazar default:false, por default:true, que se encuentra en la parte superior de field:'$scope.keepEffort'. He intentado varias soluciones de comandos sed, pero nada parece funcionar.

                    {
                            default:false,
                            enabled:true,
                            field:'criticalPath',
                            filter:false,
                            filterValue:'',
                            id:'show-critical-path',
                            operator:'colorize'
                    },{
                            default:false,
                            enabled:true,
                            field:'$scope.keepEffort',
                            filter:false,
                            filterValue:'',
                            id:'effort-constant',
                            operator:'var'
                    },{
                            default:false,
                            enabled:true,
                            field:'$scope.automaticProgress',
                            filter:false,
                            filterValue:'',
                            id:'automatic-progress',
                            operator:'var'
                    },{
                            default:false,
                            enabled:true,
                            field:'groupView',
                            filter:false,
                            filterValue:'',
                            id:'gantt-group-view',
                            operator:'var'
                    },{
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para reemplazar default:false, por default:true,, que se encuentra encima de field:'$scope.keepEffort' en un archivo grande config.js, se puede usar el comando sed con una expresión regular para hacer coincidir el patrón y reemplazarlo con la cadena deseada. El comando puede ser:

    sed -i "s/default:false,.*field:\'\$scope\.keepEffort\&#39\;/default:true,\n\t\t\t\tfield:\'\$scope\.keepEffort\&#39\;/g" config.js
    

    Explicación:

    • s/ – comando de sustitución en sed para reemplazar el patrón
    • default:false,.*field:\'\$scope\.keepEffort\&#39\;/ – expresión regular para hacer coincidir el patrón, que incluye default:false, seguido de cualquier carácter .* y la cadena exacta field:'$scope.keepEffort';
    • default:true,\n\t\t\t\tfield:\'\$scope\.keepEffort\&#39\;/ – cadena de reemplazo, que incluye default:true, seguido de una nueva línea \n y 4 tabulaciones \t, y la misma cadena field:'$scope.keepEffort';
    • g – indicador global para reemplazar todas las ocurrencias en el archivo
    • config.js – nombre del archivo a modificar en su lugar (indicador -i)

    Este comando debería funcionar para el formato de archivo dado y reemplazar la cadena según sea necesario. Sin embargo, siempre se recomienda hacer una copia de seguridad del archivo antes de modificarlo con sed.

Comments are closed.