Shell 에서 텍스트 가 긴 줄 을 삭제 하 는 방법

어떤 때 는 파일 삭제 삭제 작업 을 수행 해 야 합 니 다. 이 럴 때 vi 명령 의 dd 명령 을 자주 사용 합 니 다. 예 를 들 어 10G (10 줄 로 이동) 를 먼저 실행 한 다음 에 20dd (20 줄 삭제) 를 실행 합 니 다. 그러나 실제 상황 은 반드시 이렇게 일반적인 것 이 아 닙 니 다. 예 를 들 어 파일 에서 한 줄 의 길이 가 200 글자 가 넘 는 줄 을 삭제 하려 면 텍스트 가 비교적 작 으 면 괜 찮 습 니 다.몇 만 줄 이면, 몇 십 만 줄 이면?이거 vi 쓰 려 면 비 현실 적 이 야.내 가 생각 한 방법 은 바로 sed, awk, egrep 명령 을 통 해 목적 을 달성 하 는 것 이다.간단 한 예 를 들다.
다음 텍스트 파일 이 라면 길이 가 5 글자 이상 인 것 을 삭제 해 야 합 니 다.
root@linux# cat data
1
22
333
4444
55555
666666
7777777
88888888

방법 1: awk 명령 을 사용 하 는 length () 함수
root@linux# cat data | awk '{if (length($0) <=4 ) print $0}'
1
22
333
4444

방법 2: grep 명령 사용 
root@linux# cat data | egrep -w '^.{1,4}'
1
22
333
4444

방법 3: sed 명령 사용
root@linux# cat data | sed -n '/^.\{5,\}/!w NewFile'
root@linux# cat NewFile
1
22
333
4444

비고:
1. awk, grep 명령 을 사용 할 때 처 리 된 파일 을 다른 새 파일 로 바 꿀 수 있 습 니 다.
2. egrep - w 매개 변 수 는 패턴 과 일치 하 는 단어 만 표시 합 니 다.
3. ^. 임의의 문자 로 시작 하 는 줄 을 표시 합 니 다. 이것 은 - w 명령 과 일치 합 니 다. 이것 은 매우 중요 합 니 다. 그렇지 않 으 면 찾 을 수 없습니다.
4. !w  !모든 패턴 이 일치 하지 않 음 을 표시 합 니 다. w 는 출력 입 니 다. 새 파일 에 기록 합 니 다.

좋은 웹페이지 즐겨찾기