질문
고유하지 않고 여러 줄에 걸쳐 반복되는 단어를 인쇄할 수 있습니까? 한 줄에 들어 있는 고유한 단어만이 아닙니다.
이전 작품
가지다이것단어에서 중복된 단어를 찾는 문제를 해결하세요같은 줄. 또 다른 문제는 결말이 맞지 않는다는 점이다.단어 경계시작하는 사람과 함께.
입력 샘플
[
{
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]
설명하다
grep -wo
첫째, 각 단어가 한 줄에 인쇄되는 토큰화된 단어를 사용할 수 있습니다 .그런 다음 를 사용하여 토큰화된 단어를 정렬할 수 있습니다
sort
.마지막으로 연속된 고유 단어나 반복 단어를 찾는 데 사용할 수 있습니다
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