2010-02-23 17 views
5

Tengo un archivo de texto de múltiples líneas, donde cada línea tiene el formatobuscar y reemplazar desde la línea de comandos de UNIX

..... Game #29832: ...... 

que desea anexar el carácter '1' a cada número en cada línea (que es diferente de cada línea), ¿alguien sabe de una manera de hacerlo desde la línea de comando?

Gracias

Respuesta

4

Usando sed:

cat file | sed -e 's/\(Game #[0-9]*\)/\11/' 
+0

UUOC. Sed-e 's/\ (Game # [0-9] * \)/\ 11 /' file' – ghostdog74

+3

Bastante. Algunos hábitos se mueren duro. – anshul

1
sed 's/ Game #\([0-9]*\):/ Game #1\1:/' yourfile.txt 
+0

no funciona: sed 's/Juego # ([0-9] *):/Juego # 1 \ 1: /' handHistories1.txt sed : -e expresión # 1, char 31: referencia no válida \ 1 en el comando 's 'RHS – Aly

+0

@Aly, que funciona con gnu sed. Dependiendo de su versión sed, suelte la barra invertida antes de (y) o vea si tiene argumentos para su versión sed para habilitar esa sintaxis –

+0

que había formateado su comando como una cita, por lo que las barras invertidas se consumieron. Lo hice formatear como código. El OP quiere * anexar * '1', por cierto. –

6
sed -i -e 's/Game #[0-9]*/&1/' file 

-i es para la edición in situ, y & medio que sea, emparejados a partir del patrón. Si no desea sobrescribir el archivo, omita el indicador -i.

0

GNU awk

awk '{b=gensub(/(Game #[0-9]+)/ ,"\\11","g",$0); print b }' file 
Cuestiones relacionadas