如何使用 sed c 选项更改完整行

如何使用 sed c 选项更改完整行

下面的 sed 命令应该将 Sergio Oliva 的国家/地区从美国更改为古巴,但正如您在输出中看到的那样,它仍然是美国。我正在使用的书使用此示例来说明如何使用c更改完整行的选项。你能解释一下为什么这个例子没有按预期工作吗?

命令

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

输出

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 

答案1

我不知道你的sed版本,但我怀疑它不支持那些单词障碍标记:

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

输出

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 

您会看到 - 这些障碍只能用于处理两侧的空格和/或换行符。但你的输入两边总是有空格奥利瓦所以...干掉他们?

另外,如果你只是想改变古巴,那么,你可以只是改变古巴:

sed 's/Oliva USA/Oliva Cuba/'

相关内容