Как заменить знак плюс пробелом в sed?

Вы создаете хук режима, который заменяет lambda на греческий символ.

   (defun sm-greek-lambda ()
       (font-lock-add-keywords nil `(("\\<lambda\\>"
           (0 (progn (compose-region (match-beginning 0) (match-end 0)
           ,(make-char 'greek-iso8859-7 107))
           nil))))))

Затем вы добавляете этот хук в ваш режим:

   (add-hook 'emacs-lisp-mode-hook 'sm-greek-lambda)
1
05.06.2018, 10:43
3 ответа

Por defecto, sedusa expresiones regulares básicas (BRE ), donde el signo más no es especial. Entonces puede usarlo en el comando scomo usaría un carácter regular:

<<< 'United+States' sed 's/+/ /g'

Si desea modificar un archivo con varias instancias en la misma línea(g)o con varias líneas

sed 's/+/ /g' filename

Si usa expresiones regulares extendidas (ERE, sed -Een versiones de sedque lo admiten ), entonces necesita escapar del signo más:

sed -E 's/\+/ /g'...

(Consulte esta pregunta para ver la diferencia entre las variantes de expresiones regulares.)

17
27.01.2020, 23:10
$ echo 'United+States' | tr '+' ' '
United States

Dado que solo está cambiando caracteres individuales, es más rápido hacerlo con tr.

El script equivalente sedse vería como

$ echo 'United+States' | sed 'y/+/ /'
United States

o

$ echo 'United+States' | sed 's/+/ /g'
United States

El comando yen sedreemplaza todas las apariciones del primer conjunto de caracteres (solo +aquí )con el carácter correspondiente en el segundo conjunto (solo espacio aquí ).

El comando sreemplaza el texto que coincide con una expresión regular con algún texto. Con g, lo hace para cada aparición. Sin él, solo para el primero de cada línea de entrada.


Para cambiar signos positivos por espacios solo cuando están flanqueados por palabras:

sed 's/\>+\</ /g'

Esto cambiaría a+ba a bpero dejaría a + by a++bsin modificar.

El patrón \>coincide con el espacio de ancho cero al final de una palabra, y \<es análogo para el comienzo de una palabra. GNU sedtambién entiende\b(ya sea el principio o el final de una palabra ), y BSD sedsabe acerca de [[:<:]]y [[:>:]]que funcionan como \<y \>respectivamente.

9
27.01.2020, 23:10

Puede verificar este ejemplo y trabajar de acuerdo a lograr su resultado.

Ejemplo :-Este código realiza el cambio y escribe el archivo modificado en "songs2.txt". El archivo de salida contiene:

1, Justin Timberlake, Título 545, Precio $7.30
2, Taylor Swift, Título 723, Precio $7.90
3, Mick Jagger, Título 610, Precio $7.90
4, Lady Gaga, Título 118, Precio $7.30
5, Johnny Cash, Título 482, Precio $6.50
6, Elvis Presley, Título 335, Precio $7.30
7, John Lennon, Título 271, Precio $7.90

Si desea reemplazar todas las ocurrencias de "Efectivo " con " Papelera ", use:

sed 's/Cash/Trash/' songs.txt > songs2.txt

Enlace de referencia:-Una guía rápida para usar comandos Sed en Linux

0
27.01.2020, 23:10

Теги

Похожие вопросы