좋아요! Linux에서 특정 문자열이 포함된 행과 그 위 1줄 + 아래 4줄을 삭제해서 새 파일로 만드는 방법을 예제로 보여드릴게요. sed를 사용하면 깔끔합니다.
⸻
sed '/TARGET_STRING/{
N; # 다음 줄 읽기 (현재 줄+다음 줄)
N;N;N; # 총 5줄(현재+다음4줄) 선택
x; # 패턴공간과 hold space 교환
d # 삭제
}' input.txt > output.txt
⸻
GNU sed에서는 -n과 p 옵션, 범위 지정으로 가능:
sed '/TARGET_STRING/{=;}' input.txt
하지만 “위 1줄, 해당 줄, 아래 4줄” 모두 삭제하려면 awk가 더 직관적입니다.
⸻
awk '
{
lines[NR] = $0
}
/TARGET_STRING/ {
delete_lines[NR-1]=1 # 위 1줄
delete_lines[NR]=1 # 해당 줄
delete_lines[NR+1]=1 # 아래 4줄
delete_lines[NR+2]=1
delete_lines[NR+3]=1
delete_lines[NR+4]=1
}
END {
for (i=1;i<=NR;i++) {
if (!(i in delete_lines)) print lines[i]
}
}
' input.txt > output.txt
✅ 장점:
• 파일 전체를 읽고 삭제할 줄 번호를 지정 후 출력
• 여러 줄 조건, 위/아래 줄 삭제도 자유롭게 확장 가능
⸻
원하면 제가 sed 한 줄 명령으로 바로 실행 가능한 버전도 만들어 드릴 수 있어요.
이걸 쓰면 원본 파일 수정 없이 바로 새 파일 생성 가능합니다.