Você pode fazer assim:
CommentAppend() {
# Comment line and append line below commented line
local comment="$1" # search this line and comment it
local append="$2" # Append this line below commented line
local InputFile="$3"
perl -pi -e "s/\Q${comment}\E/#${comment}\n${append}/g" "$InputFile"
}
Os delimitadores \Q...\E
em expressões regulares Perl garantem que qualquer coisa entre eles seja interpretada como uma string literal em vez de uma expressão regular (consulte perldoc perlre
).
Observe que a substituição pode ser executada em apenas uma etapa e o nome do arquivo deve ser citado (como em "$InputFile"
) para evitar a divisão de palavras. Isso se aplica se você usa sed
ou perl
.