2011-12-02 22 views
5

Tengo un archivo con este contenido:sed: simplemente se trata de eliminar una subcadena

foo: bar1 
foo: bar2 
foo: bar3 
foo: bar4 
foo: bar5 

Quiero quitar las cadenas "foo:  " por lo que el archivo permanece:

bar1 
bar2 
bar3 
... 

I estoy tratando con:

$ sed 's/foo: /' file.txt 

pero dice:

sed: -e expresión # 1, char 15: comando `s'no terminados

Cualquier ayuda?

Javi

Respuesta

14

Es necesario:

$ sed -r 's/^foo: //' file.txt 
+2

Si el archivo solo tiene el contenido anterior, ¿no bastaría 'sed 's /.*;//' file.txt'? – potong

+1

@poton Sí, eso sería igual de bien. En mi humilde opinión, es mejor ser más específico. Nunca se sabe, ¿verdad? – aefxx

+4

El '-r' no es necesario en este caso y no está disponible en algunas versiones de' sed'. –

2

Por esta simple tarea puede utilizar cut:

cut -b 11- INPUTFILE 

HTH

+1

O 'cut -d ';' -F2' – Kevin

0
awk -F';' '{print $2}' file 

o

grep -Po '(?<=&nbsp;).*$' file 
3

Su file

[jaypal:~/Temp] cat file 
foo:&nbsp;bar1 
foo:&nbsp;bar2 
foo:&nbsp;bar3 
foo:&nbsp;bar4 
foo:&nbsp;bar5 

Usando awk:

[jaypal:~/Temp] awk -F";" '{print $NF}' file 
bar1 
bar2 
bar3 
bar4 
bar5 

Usando sed

[jaypal:~/Temp] sed 's/.*;//' file 
bar1 
bar2 
bar3 
bar4 
bar5 

Usando cut

[jaypal:~/Temp] cut -d";" -f2 file 
bar1 
bar2 
bar3 
bar4 
bar5 
0

Ejemplo práctico usando sed de quitarse una subcadena y luego copiar para pegar tampón (Linux)
Escaneado de una archivo de configuración Autohotkey en Linux (por desgracia no autohotkey para Linux). '::' se utiliza como un delimitador en AHK

grep -Eie "xxx::" AutoHotkey.ahk | sed 's/^.*:://' | xclip