sed를 사용하여 마지막으로 일치하는 행을 제외하고 특정 날짜 이전의 모든 행을 가져옵니다.

sed를 사용하여 마지막으로 일치하는 행을 제외하고 특정 날짜 이전의 모든 행을 가져옵니다.

sed를 사용하여 파일에서 줄을 가져와야 하지만 마지막 줄이 인쇄되는 것을 원하지 않습니다. 이렇게 하려면 이 명령에 무엇을 추가해야 합니까?

sed "/$START_DATE/q" user.log>test2.log

답변1

GNU sed가 있는 경우 다음 q으로 바꿀 수 있습니다 Q.

Q [종료 코드]

This command accepts only one address.

This command is the same as q, but will not print the contents of pattern space.

그래서sed "/$START_DATE/Q" user.log>test2.log


그렇지 않으면 기본 인쇄를 끄고 명시적으로 종료하기 전에 다음 줄을 인쇄할 수 있습니다.

sed -n '/Line 10/q; p'

답변2

더 직관적이라고 생각되면 sed마지막 행(이전/기존 행과 일치 sed)을 제거하는 작업만 수행하는 파이프라인에 두 번째 파이프를 추가할 수 있습니다.

sed "/$START_DATE/q" user.log | sed '$d' > test2.log

관련 정보