Equivalente DEB para la utilidad de 'reemplazo' de RPM

Equivalente DEB para la utilidad de 'reemplazo' de RPM

A menudo uso el replacecomando muy útil en mi servidor CentOS:

El programa de utilidad de reemplazo cambia cadenas en archivos o en la entrada estándar.

No es un paquete independiente ni siquiera en el lado de RPM, creo que es parte de un paquete de utilidades más grande. De todos modos, me pregunto si existe un equivalente Ubuntu de esto. Sé que puedo jugar con grepy sed, pero replacees mucho más conveniente.

Respuesta1

Esta es una forma alternativa de instalar el archivo rpm replace 2.24que no proviene del código fuente, ya que se trata de una aplicación que ya forma parte de Red Hat/CentOS.alien

No dude en copiar y pegar las siguientes líneas en una ventana de terminal.

cd /tmp
sudo apt install alien
wget https://extras.getpagespeed.com/redhat/7/x86_64/RPMS/replace2-2.24-1.el7.x86_64.rpm
sudo alien replace2-2.24-1.el7.x86_64.rpm
sudo dpkg -i replace2_2.24-2_amd64.deb 

Luego ejecuta la nueva aplicación.

$ replace2 
replace 2.24 (C) Richard K. Lloyd 2004 - The sane person's alternative to sed

Syntax: replace2 [-?] [-A] [-b] [-c startcol] [-d tempdir] [-e] [-f]
                 [-h] [-i] [-L] [-l linenum] [-m maxreplines] [-n] [-P] [-p]
                 [-r|R] [-s] [-T] [-t maxtimes] [-u backupsuffix] [-v]
                 [-w] [-x suffix [-x...]] [-z]
                 old_str new_str [-a old_str new_str...] [filename...]

-? displays this syntax message.
-A forces the program to assume all files are text files. Normally, the first
   256 bytes are examined to auto-determine if a file is text or binary.
   This option is deprecated and may be changed or removed in a future release.
-a allows extra pairs of strings to be replaced in order.
-b forces the program to assume all files are binary files.
-c startcol starts the string replace from column 'startcol' rather than the
   first column.
-d specifies the temporary directory for storing modified files. If not
   supplied, the default directory is $TMPDIR or, if that isn't set, /tmp.
-e makes search case-sensitive. new_str exactly replaces old_str
   with no case-adjustment to new_str.
-f forces the update of files without any .cln backup.
-h indicates that replacement pairs are binary hex data.
-i interactively prompts the user to confirm if they want strings replaced in
   next file. Specifying -i -i switches to prompting for each replacement.
-L follows soft-links specified on the command line.
-l linenum starts the string replacement from line 'linenum' rather than the
   first line.
-m maxreplines specifies the maximum number of lines in a file that should
   have string replacements.
-n displays what strings would be replaced without actually replacing them.
   It also switches on verbose mode.
-P pre-pads new_str with leading spaces if it is shorter than old_str.
-p pads new_str with trailing spaces if it is shorter than old_str.
-r or -R recurses down the current directory tree (if no filenames are given),
   replacing strings in all files found. Use -x to narrow the recursion.
-s relaxes the condition that old_str has to match a 'word' i.e. it replaces
   old_str even if it is a substring of a 'word'.
-T retains the timestamps of the original unmodified files.
-t maxtimes states the maximum number of times a string can be replaced
   in any single line of a file.
-u backupsuffix specifies the backup suffix for the unmodified file.
-v increments (switches on) verbose mode, reporting a summary of replacements
   if specified once and all replacements if specified twice (i.e. -vv).
-w recursively replaces strings in all Web-related source files in the current
   directory tree. Equivalent to "-r -x .html -x .htm -x .asp -x .js -x .css
   -x .xml -x .xhtml -x .shtml -x .jsp -x .php -x .php3 -x .php4 -x .pl".
-x suffix specifies a case-insensitive filename suffix to look for when
   recursing. Multiple -x params can be supplied and have an "or" meaning.
-z Zero-terminate any binary replacement string.

¡Espero que esto ayude!

Respuesta2

Los paquetes mariadb-server-10.1, mysql-server-5.7y percona-xtradb-cluster-server-5.7contienen versiones de replace, pero estas versiones parecen ser en su mayoría antiguas y algunas incluso están obsoletas.

El software tiene un sitio web llamadohttps://replace.richardlloyd.org.uk, desafortunadamente el enlace de descarga no funciona, pero puedes descargar la última versión (actualmente 2.24) como un .tar.gzarchivo desdeaquí: Desplácese hacia abajo y seleccione "HTTP" en la última línea. Siga estos pasos para instalar replacedesde este archivo:

  1. Extrae el .tar.gzarchivo:

    tar xf replace-*.tar.gz
    
  2. Cambie al directorio:

    cd replace-*/
    
  3. La instalación necesita gmake, pero se llama makeen Ubuntu, así que cree un enlace simbólico:

    sudo ln -s /usr/bin/make /usr/bin/gmake
    
  4. Correr gmake:

    gmake
    
  5. Cambie el shebang de tests/runtestsa bash(porque usa let, que shno tiene):

    sed '1s/sh/bash/' tests/runtests
    
  6. Ejecute las pruebas:

    gmake test
    
  7. Instale el software en /usr/local/bin/replace:

    sudo gmake install
    

Una vez instalado, puedes eliminar el /usr/bin/gmakeenlace simbólico, así como el replace-N.NN/directorio y el .tar.gzarchivo:

cd .. && rm -r replace-*/ replace-*.tar.gz && sudo rm /usr/bin/gmake

información relacionada