내가 이 파일을 작업하고 있다고 가정해 보겠습니다.
보이는 첫 번째 줄의 시작 부분은 모호하므로 무시하세요. 43은 삭제될 다음 줄의 시작 부분입니다.
다음 줄(44로 시작하고 마침표로 끝나는)이 삭제됩니다.
다음 줄(424개로만 구성)도 사라집니다.
다음 줄('11. Kings and Heroes'로 구성)도 사라졌습니다.
다음 줄은 예약되어 있습니다.
답변1
나는 이것을 사용할 것입니다 grep(1)
:
grep -v '^[0-9]' filename
^[0-9]
숫자로 시작하는 모든 줄과 일치하며, -v
일치하는 줄을 포함하는 대신 제외합니다. [:digit:]
대신 문자 클래스를 사용할 수도 있습니다 [0-9]
.
대신, -v
범위를 반대로 바꿀 수 있습니다.
grep '^[^0-9]' filename
이는 숫자로 시작하지 않는 모든 줄과 일치하지만 빈 줄과 일치하지 않습니다.
grep
, sed
및 의 경우 awk
내 일반적인 규칙은 일치 및 단순 추출의 경우 를 사용하고, grep
상태 비저장 재작성에는 을 사용하고 sed
, 상태 저장 수정의 경우 을 사용하는 것입니다 awk
. 그렇기 때문에 귀하의 질문에서 요청한 것(다른 사람들이 이미 답변한 것 ) 을 수행하는 grep
대신 사용하는 것이 좋습니다.sed
sed
답변2
sed -e '/^[0-9]/d' filename > filename.new
아니면 그 자리에서 수정하세요.
sed -i -e '/^[0-9]/d' filename
답변3
sed -e '/^[0-9].*$/d' oldfile > newfile