.ignore
교체해야 하는 파일이 있습니다 projdir
.
ignore \..*
ignore README
projdir Snake
Snake를 "PacMan" 등으로 교체해야 합니다. 매뉴얼 페이지를 읽었지만 무엇을 해야할지 모르겠습니다.
답변1
다음으로 시작하는 줄을 검색 projdir
하고 전체 줄을 새 줄로 바꿉니다.
sed -i 's/^projdir .*$/projdir PacMan/' .ignore
^
라인 시작/끝 마커 이므로 $
패턴은 전체 라인과 일치합니다 .*
. 변경사항을 출력하는 대신 직접 작성 -i
하도록 지시합니다 .sed
.ignore
답변2
한 가지 방법은 유지하려는 부분에 대한 역참조를 사용하여 전체 줄을 다시 작성하는 것입니다.
sed -e 's/^\( *projdir *\)[^ ]*\(.*\)*$/\1PacMan\2/'
또 다른 접근 방식은 줄의 해당 부분을 다시 작성하는 것입니다. 하지만 다른 부분이 일치하는 경우에만 가능합니다.
sed -e '/^ *projdir / s/ [^# ]/ PacMan/'
두 예제 모두 첫 번째 단어가 인 줄에서 두 번째 공백으로 구분된 단어를 다시 씁니다 projdir
.
답변3
이 게시물은 오래된 게시물이고 허용된 답변으로 문제를 해결한 것 같지만 실제 질문에 대한 답변은 아직 없습니다. 따라서 완전성과 다른 사람들을 돕기 위해:
여기의 대답은 실제로 "projdir"로 시작하는 줄이 아니라 "Snake"와 일치합니다...
sed -r 's/(^.*)Snake/\1PacMan' .ignore
이렇게 하면 줄 시작 부분에서 시작하는 모든 항목("Snake" 포함)이 "Snake" + "PacMan" 이전의 모든 항목으로 대체됩니다. \1은 () 내에서 일치하는 내용을 나타냅니다. "Snake" 이후의 모든 것은 동일하게 유지됩니다.