以下の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/'