홈페이지 » 어떻게 » Linux 터미널을 사용하여 파일의 중간에서 줄을 제거하는 방법

    Linux 터미널을 사용하여 파일의 중간에서 줄을 제거하는 방법

    자신의 서버를 관리 할 때 준 표준 적으로해야 할 일 중 하나는 파일 중간에서 물건을 추출하는 것입니다. 어쩌면 로그 파일 일 수도 있고, MySQL 백업 파일 중간에서 하나의 테이블을 추가해야 할 수도 있습니다..

    줄 번호를 알아 내려면 간단한 grep -n 명령이 작업을 수행했습니다 (-n 인수는 줄 번호를 출력합니다). 이것은 내가 추출해야 할 것을 알아내는 것을 쉽게했습니다..

    grep -n wp_posts howtogeekdb010114.bak | 더

    이렇게하면 결과의 왼쪽에 줄 번호가 표시됩니다. 모든 것을 "more"로 파이핑하면 스크롤하지 않고 첫 번째 행을 볼 수 있습니다. 이제 시작하는 줄 번호와 끝낼 줄 번호가 있습니다..

    4160 : - 'wp_posts'테이블의 테이블 구조 4163 : DROP TABLE IF EXISTS 'wp_posts'; 4166 : 테이블 만들기 'wp_posts'(4203 : 테이블 'wp_posts'에 대한 데이터 덤프) 4206 : 잠금 테이블 'wp_posts'쓰기, 4207 : / *! 40000 ALTER TABLE 'wp_posts'사용 안함 키 / * 4208 : INSERT INTO 'wp_posts '가치 (1,2,'2006-09-11 05:07:23 ','2006-09-11

    물론 grep의 출력을 다음과 같이 다른 파일로 파이프 할 수 있습니다.

    grep 키워드 filename.txt> 출력 파일

    필자의 경우 백업을 가져올 수 없었기 때문에 그 작업을 원하지 않았습니다. 그래서 sed를 사용하여 줄을 뽑아내는 다른 방법을 찾았습니다.이 방법이 효과적이었습니다..

    sed -n '4160,4209p'howtogeekdb0101140201.bak> 출력 파일

    기본적으로 구문은 다음과 같습니다. -n 인수를 사용하고 두 번째 줄 번호 뒤에 "p"를 포함시킵니다..

    sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp'filename> 출력 파일 이름

    파일의 중간에 특정 라인을 뽑을 수있는 다른 방법은 있습니까? "head"명령을 + number 인수와 함께 사용하여 파일의 첫 번째 x 줄을 읽은 다음 tail을 사용하여 그 줄을 추출 할 수 있습니다. 가장 좋은 옵션은 아니지만 많은 오버 헤드가 있습니다. 간단한 옵션? split 명령을 사용하여 원하는 줄 번호에서 파일을 여러 파일로 바꾼 다음 head 또는 tail을 사용하여 줄을 추출 할 수 있습니다.

    아니면 그냥 sed를 사용할 수 있습니다..