como mudar uma linha completa com a opção sed c

2

O comando sed abaixo deve mudar o país de Sergio Oliva para Cuba dos EUA, mas como você pode ver na saída, ainda é EUA. O livro que estou usando usa esse exemplo para ilustrar o uso da opção c para alterar uma linha completa. Você pode explicar por que este exemplo não está funcionando como pretendido?

comando

sed '/\<Oliva\>/ c \ Sergio Oliva Cuba 1967 1968 1969' mrolympia.dat

saída

Larry Scott USA 1965 1966
 Sergio Oliva USA 1967 1968 1969
 Arnold Schwarzenegger Osterreich 1970 1971 1972 1973 1974 1975
 Franco Columu Argentinien 1976 1981
 Chris Dickerson USA 1982
 Samir Bannout Libanon 1984
 Lee Haney USA 1984 1985 1986 1987 1988 1989 1990 1991
 Dorian Yates Grossbritannien 1992 1993 1994 1995 1996 1997
 Ronnie Coleman USA 1998 1999 2000 2001 2002 2003 2004 
    
por Leahcim 03.09.2014 / 20:47

1 resposta

0

Eu não sei a sua versão sed , mas minha suspeita é que ela não suporta esses marcadores de barreira de palavras:

sed '/ Oliva /c\
Sergio Oliva Cuba 1967 1968 1969
' <<\DATA
Larry Scott USA 1965 1966
Sergio Oliva USA 1967 1968 1969
Arnold Schwarzenegger Osterreich 1970 1971 1972 1973 1974 1975
Franco Columu Argentinien 1976 1981
Chris Dickerson USA 1982
Samir Bannout Libanon 1984
Lee Haney USA 1984 1985 1986 1987 1988 1989 1990 1991
Dorian Yates Grossbritannien 1992 1993 1994 1995 1996 1997
Ronnie Coleman USA 1998 1999 2000 2001 2002 2003 2004
DATA

OUTPUT

Larry Scott USA 1965 1966 
Sergio Oliva Cuba 1967 1968 1969
Arnold Schwarzenegger Osterreich 1970 1971 1972 1973 1974 1975
Franco Columu Argentinien 1976 1981
Chris Dickerson USA 1982
Samir Bannout Libanon 1984
Lee Haney USA 1984 1985 1986 1987 1988 1989 1990 1991
Dorian Yates Grossbritannien 1992 1993 1994 1995 1996 1997
Ronnie Coleman USA 1998 1999 2000 2001 2002 2003 2004 

Você vê - essas barreiras podem servir apenas para lidar com espaço e / ou nova linha em ambos os lados. Mas a sua entrada sempre tem espaços em ambos os lados de Oliva , então ... acabe com eles?

Além disso, se você só quer mudar Cuba, então, você poderia apenas mudar Cuba:

sed 's/Oliva USA/Oliva Cuba/'
    
por 03.09.2014 / 21:11

Tags