지정된 줄 뒤의 텍스트 파일 끝을 삭제하는 방법

지정된 줄 뒤의 텍스트 파일 끝을 삭제하는 방법

텍스트 파일이 있는데 == Changelog ==해당 줄과 그 뒤의 모든 내용이 삭제되는 새 파일을 만들고 싶습니다.

답은 어딘가에 있을 것이라고 확신하고 그것을 찾으려고 노력했지만 지금은 머리가 핑핑 돌고 있습니다. sed, awk, csplit, ...?

답변1

awk를 사용하세요:

awk '/Changelog/{exit}1' file > newfile

아니면 sed를 사용하세요:

sed -n '/Changelog/q;p' file > newfile

답변2

나는 다음을 사용할 것이다 sed:

sed '/== Changelog ==/,$d' file > newfile

이 구문은 위의 jasonwryan이 제안한 구문보다 덜 효율적이지만 대부분의 사람들이 더 읽기 쉽습니다. sed에는 잘 알려진 두 가지 용도가 있습니다. 기본 검색 및 바꾸기 s///와 범위 기반 작업입니다 /beginpattern/,/endpattern/X. 여기서 X는 sed 작업입니다.에일레트,에스검색 및 바꾸기... 세미콜론(;)이 포함된 구문은 프로그래밍에 더 적합하고 이해하기 어렵습니다.

답변3

csplit -f newfile -n1 infile /==\ Changelog\ ==/ 

이는 생성 ./newfile0./newfile1 (GNU csplit또는 POSIXly 사용 ./newfile[12]). 첫 번째에는 일치하는 줄이 처음으로 나타나기 전의 모든 줄이 포함되고 == Changelog ==, 두 번째에는 해당 줄 이후의 모든 줄이 포함됩니다.

관련 정보