2010-06-15 4 views
0

안녕하세요 다음 파일이 있습니다. sed로 제거하는 방법 첫 번째 uniq FILE NAME을 제외한 모든 FILE NAME 행 예를 들어 모든 FILE NAME 줄을 제거해야합니다. 첫 번째 제외 파일 :awk + 첫 줄 제외한 모든 uniq 줄을 지우지 마십시오. (FILE NAME)

FILE NAME: /dir1/dir2/dir3/dir4/dir5/file 
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file 

파일 :

FILE NAME: /dir1/dir2/dir3/dir4/dir5/file 
PARAMETER NAME: blablabla 
TARGET FILE: 12 
SOURCE FILE: 565 
FILE NAME: /dir1/dir2/dir3/dir4/dir5/file 
PARAMETER NAME: blablabla 
TARGET FILE: 18 
SOURCE FILE: 552 
FILE NAME: /dir1/dir2/dir3/dir4/dir5/file 
PARAMETER NAME: blablabla 
TARGET FILE: 14 
SOURCE FILE: 559 
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file 
PARAMETER NAME: blablabla 
TARGET FILE: 134 
SOURCE FILE: 344 
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file 
PARAMETER NAME: blablabla 
TARGET FILE: 13 
SOURCE FILE: 445 
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file 
PARAMETER NAME: blablabla 
TARGET FILE: 13 
SOURCE FILE: 434 
+0

코드 및 데이터를 4 자리까지 들여 씁니다. 연속 라인 사이에 공백 라인이 필요하지 않습니다. Markdown 편집기에서 '2 진'버튼 ('101010'표기법이 있음)은 선택된 행을 들여 쓰기합니다. –

답변

0

당신은 단지 당신이 보여 샘플에 대해 나열 두 줄과 같은 고유 한 파일 이름 라인을 원하는 경우에,

grep "^ 파일 이름"input.txt | 정렬 | UNIQ


업데이트 :
나는 당신이 정말로 원하는 것을 확실하지 않다.
sort | uniq 필터는 "^FILE NAME"으로 시작하는 줄에서 모든 고유 한 경로 이름을 가져옵니다. 샘플 입력 및 출력이 올바르지 않으면 edit 버튼을 사용하여 수정할 수 있습니다.

+0

파일 이름의 uniq fath가 필요하지 않습니다. –

0
질문에 태그가 AWK에서

: 당신은 아마 sed 함께 할 수

awk '$0 ~ /^FILE NAME:/{ if (count++ == 0) print; } 
    $0 !~ /^FILE NAME:/{     print; }' 

하지만, 특히 청결하지 않습니다.


질문에 약간의 의문이 생깁니다. 그 차이가 중요하지만 대답은 현저하게 유사합니다

awk '$0 ~ /^FILE NAME:/{ if (count[$0]++ == 0) print; } 
    $0 !~ /^FILE NAME:/{      print; }' 

난 아직도 당신이 다른 모든 라인을 원하는 있으리라 믿고있어 - 예제 출력은 쇼 '파일명'라인을하지만, 문제는 삭제에 대해 아무것도 말하지 않는다 다른 라인들. 분명히, 다른 행을 원하지 않는다면, awk 스크립트의 두 번째 행을 제거하십시오.

+0

해당하지 않음 bacuse 파일 이름 :/dirA/dirB/dirC/dirD/dirE/file 줄? yael –

0

AWK에서 연관 배열을 사용할 수 있으며 "FILE NAME"이 포함 된 줄이 배열에 있는지 확인하십시오. 그렇다면 그것을 인쇄하지 마십시오. 그렇지 않으면 배열에 저장하고 인쇄하십시오. "파일 이름"이 포함되지 않은 행의 경우 인쇄하십시오.

+0

그 예를 들어주세요. THX –

+1

@yael : 지금까지 가지고있는 것을 왜 보여주지 않겠습니까? –

관련 문제