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

관련 정보