A menudo uso el replace
comando 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 grep
y sed
, pero replace
es mucho más conveniente.
Respuesta1
Esta es una forma alternativa de instalar el archivo rpm replace 2.24
que 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.7
y percona-xtradb-cluster-server-5.7
contienen 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.gz
archivo desdeaquí: Desplácese hacia abajo y seleccione "HTTP" en la última línea. Siga estos pasos para instalar replace
desde este archivo:
Extrae el
.tar.gz
archivo:tar xf replace-*.tar.gz
Cambie al directorio:
cd replace-*/
La instalación necesita
gmake
, pero se llamamake
en Ubuntu, así que cree un enlace simbólico:sudo ln -s /usr/bin/make /usr/bin/gmake
Correr
gmake
:gmake
Cambie el shebang de
tests/runtests
abash
(porque usalet
, quesh
no tiene):sed '1s/sh/bash/' tests/runtests
Ejecute las pruebas:
gmake test
Instale el software en
/usr/local/bin/replace
:sudo gmake install
Una vez instalado, puedes eliminar el /usr/bin/gmake
enlace simbólico, así como el replace-N.NN/
directorio y el .tar.gz
archivo:
cd .. && rm -r replace-*/ replace-*.tar.gz && sudo rm /usr/bin/gmake