2011-12-02 21 views
5

Ho un file con questo contenuto:sed: solo cercando di rimuovere una stringa

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

Voglio rimuovere le catene "pippo:  " in modo che il file rimane:

bar1 
bar2 
bar3 
... 

I sto cercando con:

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

ma dice:

sed: -e espressione # 1, char 15: comando `non terminati s'

Qualsiasi aiuto?

Javi

risposta

14

È necessario:

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

Se il file ha solo il contenuto di cui sopra, non sarebbe sufficiente "sed 's /.*;//' file.txt'? – potong

+1

@poton Sì, lo farebbe altrettanto bene. IMHO, però, è meglio essere più specifici. Non si sa mai, giusto? – aefxx

+4

Il '-r' non è necessario in questo caso e non è disponibile in alcune versioni di' sed'. –

2

Per questa semplice operazione è possibile utilizzare cut:

cut -b 11- INPUTFILE 

HTH

+1

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

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

o

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

tuo file

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

Utilizzando awk:

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

Utilizzando sed

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

Uso cut

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

esempio pratico utilizzando sed per togliere una stringa e quindi copiare incollare tampone (Linux)
scansione di un file di configurazione Autohotkey su Linux (purtroppo non AutoHotkey per Linux). '::' viene utilizzato come delimitatore in AHK

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