下面的 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/'