해결책

해결책

질문

고유하지 않고 여러 줄에 걸쳐 반복되는 단어를 인쇄할 수 있습니까? 한 줄에 들어 있는 고유한 단어만이 아닙니다.

이전 작품

가지다이것단어에서 중복된 단어를 찾는 문제를 해결하세요같은 줄. 또 다른 문제는 결말이 맞지 않는다는 점이다.단어 경계시작하는 사람과 함께.

입력 샘플

[
    {
        entity: 
        {
            id: int
            employee:
            {
                id: int
                company: {
                    name: string
                    area: 
                    {
                        country: string
                        city: string
                        zipcode: string
                    }
                }
                person: 
                {
                    id: int
                    firstName: string
                    middleName: string
                    lastName: string
                }
            }
        }
        entity: 
        {
            id: int
            person: 
            {
                id: int
                firstName: string
                middleName: string
                lastName: string
            }
            area: 
            {
                country: string
                city: string
                zipcode: string
            }
        }
    }
]

출력 예 - 반복/반복

area
city
country
entity
firstName
id
int
lastName
middleName
person
string
zipcode

출력 예 - 전용

company
employee
name

답변1

해결책

grep

grep -wo "[[:alnum:]]\+" input_file.txt | sort | uniq [-c | -d | -u]

egrep(이스케이프 없이 정규식 메타문자 허용)

egrep -wo "[[:alnum:]]+" input_file.txt | sort | uniq [-c | -d | -u]

설명하다

  1. grep -wo첫째, 각 단어가 한 줄에 인쇄되는 토큰화된 단어를 사용할 수 있습니다 .

  2. 그런 다음 를 사용하여 토큰화된 단어를 정렬할 수 있습니다 sort.

  3. 마지막으로 연속된 고유 단어나 반복 단어를 찾는 데 사용할 수 있습니다 uniq.

    3.1 uniq -c그러면 단어와 그 개수가 인쇄됩니다. 반복되고 고유한 모든 일치하는 단어를 포함합니다.

    3.2. uniq -d반복되는 단어가 모두 인쇄됩니다.

    3.3. uniq -u그러면 모든 고유 단어가 인쇄됩니다.

입력 샘플

abc line 1
xyz zzz
123 456
abc end line

예 1 - 중복/고유 단어 및 해당 개수:

grep -wo '[[:alnum:]]\+' input_file.txt | sort | uniq -c

산출:

   1 1
   1 123
   1 456
   2 abc
   1 end
   2 line
   1 xyz
   1 zzz

예 2 - 단어만 반복:

grep -wo '[[:alnum:]]\+' infile | sort | uniq -d

산출:

abc
line

예 3 - 고유한 단어만:

grep -wo '[[:alnum:]]\+' infile | sort | uniq -u

산출

1
123
456
end
xyz
zzz

명령 구문 분석 및 소스

  • grep매개변수
    • -w단어 경계로 구분된 전체 단어(단어 문자가 아닌 문자 \W) 를 토큰화합니다.
    • -o일치하는 줄에서 비어 있지 않은 일치하는 부분만 인쇄합니다. 즉, 우리의 경우 일치하는 줄 내에서 일치하는 비어 있지 않은 단어만 인쇄합니다.
  • grep정규식
    • [[:alnum:]]영숫자
    • \+클라인 플러스 캐릭터. 하나 이상의 항목과 일치합니다.
  • sort
  • uniq
    • -c단어와 반복 횟수를 인쇄합니다.
    • -d중복된 줄만 인쇄됩니다.
    • -u반복되지 않는(고유한) 줄만 인쇄합니다.

관련 정보