라는 파일이 .ignore
있습니다. 를 교체해야합니다 projdir
. 예를 들면 다음과 같습니다.
ignore \..*
ignore README
projdir Snake
Snake를 "PacMan"과 같은 것으로 바꿔야합니다. 맨 페이지를 읽었지만 어떻게해야할지 모르겠습니다.
라는 파일이 .ignore
있습니다. 를 교체해야합니다 projdir
. 예를 들면 다음과 같습니다.
ignore \..*
ignore README
projdir Snake
Snake를 "PacMan"과 같은 것으로 바꿔야합니다. 맨 페이지를 읽었지만 어떻게해야할지 모르겠습니다.
답변:
로 시작하는 줄을 검색 projdir
하고 전체 줄을 새 줄로 바꿉니다.
sed -i 's/^projdir .*$/projdir PacMan/' .ignore
^
그리고 $
패턴이 전체 라인을 일치하므로, / 행 끝 마커를 시작하고있다; .*
무엇이든 일치합니다. 는 -i
이야기 sed
에 직접 변경 사항을 작성하는 .ignore
단지를 출력하는 대신,
한 가지 방법은 유지할 부분에 대한 역 참조를 사용하여 전체 줄을 다시 작성하는 것입니다.
sed -e 's/^\( *projdir *\)[^ ]*\(.*\)*$/\1PacMan\2/'
다른 접근 방식은 다른 부분이 일치하는 경우에만 해당 부분을 다시 작성하는 것입니다.
sed -e '/^ *projdir / s/ [^# ]/ PacMan/'
두 예제 모두 첫 번째 단어가있는 행에서 두 번째 공백으로 구분 된 단어를 다시 작성합니다 projdir
.
sed -i 's:^projdir.*$:projdir PacMan:g' .ignore
^ projdir은 문자열 projdir로 시작하는 행을 찾는 것입니다. . * $는 같은 행에서 projdir 뒤의 문자열을 나타냅니다. 문자열 projdir PacMan은 교체 할 문자열입니다. g는 전역을위한 것입니다-projdir로 시작하는 모든 그러한 줄을 대체합니다. .ignore는 파일 이름입니다.
-i
가--in-place
그 예입니다.