한 줄에서 문자열을 검색하고 해당 줄을 다른 파일에 한 번만 인쇄합니다.

한 줄에서 문자열을 검색하고 해당 줄을 다른 파일에 한 번만 인쇄합니다.

타임스탬프가 있는 고유한 줄이 포함된 텍스트 파일이 있습니다. 다음은 텍스트 파일의 줄 예입니다.

111.111.11.11: 2017년 6월 18일 08:01:34: abc\존 도우 1윈도우...

111.111.11.11: 2017년 6월 18일 09:01:34: abc\존 도우 2윈도우...

111.111.11.11: 2017년 6월 18일 09:30:34: abc\존 도우 2윈도우...

111.111.11.11: 2017년 6월 18일 10:01:34: abc\존 도우 3윈도우...

111.111.11.11: 2017년 6월 18일 11:01:34: abc\존 도우 1윈도우...

111.111.11.11: 2017년 6월 18일 12:01:34: abc\존 도우 3윈도우...

111.111.11.11: 2017년 6월 18일 13:01:34: abc\존 도우 3윈도우...

...

이 선은 먼 길을 간다. 행의 첫 번째 항목을 이동해야 합니다.존 도우 1다른 텍스트 파일에서 발생하며 john.doe1이 포함된 다른 모든 줄을 무시합니다. 나는 전체 파일에 대해 동일한 작업을 수행해야 합니다.존 도스.

다른 파일로의 출력은 다음과 같아야 합니다.

111.111.11.11: 2017년 6월 18일 08:01:34: abc\존 도우 1윈도우...

111.111.11.11: 2017년 6월 18일 09:01:34: abc\존 도우 2윈도우...

111.111.11.11: 2017년 6월 18일 10:01:34: abc\존 도우 3윈도우...

문제는존 도스일반적으로 실제 이름은 이전에 몰랐으며 문자 "\"와 " " 사이에 나타나는 것으로만 알고 있었습니다.

답변1

익숙한 Awk 중복 제거 관용구를 확장하여 필드를 구분하는 대신 일치하는 하위 문자열을 사용하세요.

awk 'match($0, /\\[^ ]*/) && !seen[substr($0,RSTART,RLENGTH)]++' file

관련 정보