sed 또는 awk를 사용하여 파일의 각 단락에서 중복 행을 제거하십시오.

말뫼

파일에서 "SET CURRENT"로 시작하고 동일한 첫 번째 줄을 공유하고 동일한 문장이있는 구문에서 중복 줄을 제거하고 싶습니다. 예를 들어 다른 단락에 속하는 중복 줄은 제거하지 않습니다.

다음 파일이있는 경우 :

SET CURRENT = 'aaa' ;
CREATE SYN file1 FOR 1000.file1 ;
CREATE SYN file2 FOR 1000.file2 ;
CREATE SYN file3 FOR 1001.file3 ;
CREATE SYN file3 FOR 1001.file3 ;

SET CURRENT = 'aaa' ;
CREATE SYN file1 FOR 1000.file1 ;
CREATE SYN file2 FOR 1000.file2 ;
CREATE SYN file7 FOR 1000.file7 ;

SET CURRENT = 'bbb' ;
CREATE SYN file5 FOR 1002.file5 ;
CREATE SYN file6 FOR 1003.file6 ;

SET CURRENT = 'bbb' ;  
CREATE SYN file1 FOR 1000.file1 ;
CREATE SYN file8 FOR 1002.file8 ;
CREATE SYN file6 FOR 1003.file6 ;

결과는 다음과 같습니다

SET CURRENT = 'aaa' ;
CREATE SYN file1 FOR 1000.file1 ;
CREATE SYN file2 FOR 1000.file2 ;
CREATE SYN file3 FOR 1001.file3 ;

SET CURRENT = 'aaa' ;
CREATE SYN file7 FOR 1000.file7 ;

SET CURRENT = 'bbb' ;
CREATE SYN file5 FOR 1002.file5 ;
CREATE SYN file6 FOR 1003.file6 ;

SET CURRENT = 'bbb' ;
CREATE SYN file1 FOR 1000.file1 ;
CREATE SYN file8 FOR 1002.file8 ;
user000001

awk를 사용하면 다음과 같이 할 수 있습니다.

awk 'NF==0{print;next};/^SET CURRENT/{c=$4;print;next}!seen[c,$0]++' file

더 읽기 쉽게 만들기 위해 몇 가지 주석이 있습니다.

awk ' NF == 0 {       # If we find an empty line
          print       # print the line
          next        # and skip to the next record
      }
      /^SET CURRENT/{ # If we find a line beginning wiith "SET CURRENT"
          c = $4      # Store the value in the 4th field
          print       # Print the current line
          next        # and skip to the next record  
      }
      !seen[c,$0]++  # Print if the combination of the "c" value
                      # and the current line has not been stored 
                      # in array "seen", and then store the
                      # combination in the array
                      # (in order to prevent other lines to be printed)
      ' file

다음 !seen[c,$0]++과 같이 작동합니다. 배열 인덱스에서 쉼표를 사용하면 두 토큰이 SUBSEP문자로 결합 된 단일 문자열로 결합됩니다 . 이 경우 c 문자와 현재 줄 ($ 0)의 조합을 인덱스로 사용합니다. 필터링 후에 고유해야하기 때문입니다. !seen[c,$0]우리 조합이 배열 인덱스로 존재하는지 확인합니다. 색인이 없으면 표현식이 true로 평가되어 행이 인쇄됩니다. 색인이 있으면 표현식이 거짓으로 평가되고 행이 인쇄되지 않습니다. post-fix 증분 연산자를 사용하여 인덱스의 발생 횟수를 계산하므로 행이 첫 번째 발생시에만 인쇄되고 후속 일치에는 인쇄되지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

awk 또는 sed를 사용하여 여러 파일에서 중복 줄 제거

분류에서Dev

sed 및 awk와 함께 find 명령을 사용하여 파일에서 중복 IP를 제거하는 방법

분류에서Dev

줄을 복사하고 sed 또는 awk를 사용하여 새 위치에 삽입하십시오.

분류에서Dev

sed를 사용하여 각 단어에서 특정 문자 뒤의 모든 것을 삭제하십시오.

분류에서Dev

awk 또는 sed를 사용하여 텍스트 파일에서 행 사이의 행 삭제

분류에서Dev

awk 또는 sed를 사용하여 텍스트 파일에서 행 사이의 행 삭제

분류에서Dev

linux, awk 또는 sed를 사용하여 gen.gz 파일의 내용을 편집하십시오.

분류에서Dev

SED 또는 AWK를 사용하여 xml 파일에서 두 개의 다른 패턴과 일치하는 두 줄을 복제합니다.

분류에서Dev

bash, awk 또는 sed를 사용하여 중복 항목 제거

분류에서Dev

sed 또는 awk를 사용하여 한 파일의 값을 다른 파일에 추가

분류에서Dev

BASH 또는 Awk를 사용하여 중복을 제거하는 2 개의 csv 파일 병합

분류에서Dev

grep 또는 awk를 사용하여 인덱스 파일의 반복 항목에 해당하는 중복 출력 행을보고 할 수 있습니까?

분류에서Dev

sed를 사용하여 이름에 공백이있는 파일의 행을 편집하십시오.

분류에서Dev

sed 또는 awk를 사용하여 공백 뒤에 모든 till 쉼표를 제거하십시오.

분류에서Dev

sed 또는 awk 줄의 일부를 줄의 끝에 복사하여 줄 서식을 다시 지정

분류에서Dev

sed 또는 awk를 사용하여 몇 개의 문자를 제외한 모든 행의 .txt 파일에 문자열을 추가하는 방법

분류에서Dev

awk 또는 grep 또는 sed 명령을 사용하여 Linux에서 파일의 일부를 개별 파일로 추출하는 방법

분류에서Dev

여러 패턴을 일치시킨 후 awk 또는 sed를 사용하여 파일에서 결과 분리

분류에서Dev

awk 또는 sed를 사용하여 열에서 \ n을 제거하는 방법

분류에서Dev

orientdb에 배열을 제공하는 단일 열에서 중복 항목을 제거하십시오.

분류에서Dev

파일에서 줄 범위를 가져와 awk 또는 sed 또는 둘 다를 사용하여 해당 범위의 줄을 바꿉니다.

분류에서Dev

이전 명령의 변수를 기반으로 awk 또는 sed를 사용하여 파일에서 줄 삭제

분류에서Dev

sed 또는 awk를 사용하여 파일에서 필드 추출

분류에서Dev

sed 또는 awk를 사용하여 Linux의 여러 파일에 대해 여러 산술 프로세스를 반복합니다.

분류에서Dev

sed 또는 awk를 사용하여 파일 접두사로 줄 앞에 추가

분류에서Dev

첫 번째 파일을 반복하고 AWK를 사용하여 두 번째 파일의 모든 행 옆에 첫 번째 파일의 각 행을 인쇄하는 방법은 무엇입니까?

분류에서Dev

sed를 사용하여 bash 스크립트에서 정확한 문자열을 포함하는 행을 제거하십시오.

분류에서Dev

SED 또는 AWK를 사용하여 행을 열로 이동

분류에서Dev

Spring Boot를 사용하여 Excel 파일을 읽는 동안 MySQL에 중복을 삽입하지 마십시오.

Related 관련 기사

  1. 1

    awk 또는 sed를 사용하여 여러 파일에서 중복 줄 제거

  2. 2

    sed 및 awk와 함께 find 명령을 사용하여 파일에서 중복 IP를 제거하는 방법

  3. 3

    줄을 복사하고 sed 또는 awk를 사용하여 새 위치에 삽입하십시오.

  4. 4

    sed를 사용하여 각 단어에서 특정 문자 뒤의 모든 것을 삭제하십시오.

  5. 5

    awk 또는 sed를 사용하여 텍스트 파일에서 행 사이의 행 삭제

  6. 6

    awk 또는 sed를 사용하여 텍스트 파일에서 행 사이의 행 삭제

  7. 7

    linux, awk 또는 sed를 사용하여 gen.gz 파일의 내용을 편집하십시오.

  8. 8

    SED 또는 AWK를 사용하여 xml 파일에서 두 개의 다른 패턴과 일치하는 두 줄을 복제합니다.

  9. 9

    bash, awk 또는 sed를 사용하여 중복 항목 제거

  10. 10

    sed 또는 awk를 사용하여 한 파일의 값을 다른 파일에 추가

  11. 11

    BASH 또는 Awk를 사용하여 중복을 제거하는 2 개의 csv 파일 병합

  12. 12

    grep 또는 awk를 사용하여 인덱스 파일의 반복 항목에 해당하는 중복 출력 행을보고 할 수 있습니까?

  13. 13

    sed를 사용하여 이름에 공백이있는 파일의 행을 편집하십시오.

  14. 14

    sed 또는 awk를 사용하여 공백 뒤에 모든 till 쉼표를 제거하십시오.

  15. 15

    sed 또는 awk 줄의 일부를 줄의 끝에 복사하여 줄 서식을 다시 지정

  16. 16

    sed 또는 awk를 사용하여 몇 개의 문자를 제외한 모든 행의 .txt 파일에 문자열을 추가하는 방법

  17. 17

    awk 또는 grep 또는 sed 명령을 사용하여 Linux에서 파일의 일부를 개별 파일로 추출하는 방법

  18. 18

    여러 패턴을 일치시킨 후 awk 또는 sed를 사용하여 파일에서 결과 분리

  19. 19

    awk 또는 sed를 사용하여 열에서 \ n을 제거하는 방법

  20. 20

    orientdb에 배열을 제공하는 단일 열에서 중복 항목을 제거하십시오.

  21. 21

    파일에서 줄 범위를 가져와 awk 또는 sed 또는 둘 다를 사용하여 해당 범위의 줄을 바꿉니다.

  22. 22

    이전 명령의 변수를 기반으로 awk 또는 sed를 사용하여 파일에서 줄 삭제

  23. 23

    sed 또는 awk를 사용하여 파일에서 필드 추출

  24. 24

    sed 또는 awk를 사용하여 Linux의 여러 파일에 대해 여러 산술 프로세스를 반복합니다.

  25. 25

    sed 또는 awk를 사용하여 파일 접두사로 줄 앞에 추가

  26. 26

    첫 번째 파일을 반복하고 AWK를 사용하여 두 번째 파일의 모든 행 옆에 첫 번째 파일의 각 행을 인쇄하는 방법은 무엇입니까?

  27. 27

    sed를 사용하여 bash 스크립트에서 정확한 문자열을 포함하는 행을 제거하십시오.

  28. 28

    SED 또는 AWK를 사용하여 행을 열로 이동

  29. 29

    Spring Boot를 사용하여 Excel 파일을 읽는 동안 MySQL에 중복을 삽입하지 마십시오.

뜨겁다태그

보관