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/'

おすすめ記事