리눅스 문자열 조작 질문 드립니다.

camieru의 이미지

test란 파일에 아래와 같은 문자가 들어가 있습니다.

1.joe-> win
2.sara-> win
3.samson-> win
4.sagat-> win

여기서 첫번째 행 win이라는 문자열만 lose로 바꾸려고 합니다.
현재 cat test | grep '1'| cut -d" " -f2
요렇게 해서 첫번째 행 win만 추출한 상태인데
lose로 바꾸려면 vi를 쓰지않고, 어떻게 해야하는지 문의 드립니다.

ymir의 이미지

다음과 같은 파일에서..

$ cat in.txt
1.joe-> win
2.sara-> win
3.samson-> win
4.sagat-> win

첫번째 줄에서만 패턴을 바꾸는 경우

$ cat in.txt | sed '1 s/win/lose/'
1.joe-> lose
2.sara-> win
3.samson-> win
4.sagat-> win

처음으로 매치된 패턴만 바꾸는 경우

$ cat in.txt | sed '0,/win/s//lose/'
1.joe-> lose
2.sara-> win
3.samson-> win
4.sagat-> win

출력 결과는 redirection 으로 저장하세요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

camieru의 이미지

당신의 지식에 경의를 표합니다.

근데 한가지만 더 질문드립니다.

redirect 할때 같은 이름에 파일에다 덮어 쓸수는 없을까요???

개처럼 일해서 사람이 되어보자

qiiiiiiiip의 이미지

sed 를 inplace 로 하세요

camieru의 이미지

정말 정말 당신의 노고를 치하합니다ㅎㅎㅎ

개처럼 일해서 사람이 되어보자

ymir의 이미지

치하는 윗 사람이 아랫사람에게 잘했다고 칭찬할 때나 쓰는 단어입니다.
비꼬는 뜻인지, 정말로 고마워서 쓴 글인지 모르겠지만..
가급적 오해 받지 않도록 단어 사용에 있어 좀 더 신중하셨으면 합니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』