문자열을 포함하는 여러 하위 폴더에 많은 파일이 있습니다 type="abc_
. 얼마나 많은 변형이 있는지 잘 모르겠습니다 . 따라서 내 파일 내에 abc_
알 수 없는 항목이 몇 개나 있는지 알고 싶습니다 .type="abc_
나는 줄을 포함하는 것과 같은 것을 얻고 싶습니다.
"type="abc_0815 found 50 times
"type="abc_0816 found 32 times
...
and so on.
내가 그렇게 생각한다면:
grep -rni 'type="abc_' * | wc
나는 이미 14905번의 발생을 알고 있습니다 type="abc_
.
누군가 저를 도와줄 수 있나요?
답변1
이는 find
파일 목록을 가져오고 이를 전달하여 cat
출력을 구문 분석하는 데 사용됩니다 awk
.
find . -type f |
xargs -I xx cat "xx" | awk '/type="abc_/{
for(i=1;i<=NF;i++){
if($i~/type="abc_/){ d[$i]++ } } }
END{ for(i in d){ print i"\tfound",d[i],"times." } }'
type="abc_4 found 1 times.
type="abc_3 found 2 times.
type="abc_6 found 1 times.
type="abc_2 found 2 times.
type="abc_10 found 3 times.
type="abc_5 found 1 times.
cat *
검색 대상을 보다 유연하게 만들기 위해 단순 대신 find를 사용합니다 .
xargs .. cat | ..
로 단축할 수 있다find . -type f -exec cat {} + | awk ..
답변2
-c
grep이 계산하도록 하려면 플래그를 추가하기만 하면 됩니다 .
0개의 결과가 너무 많은 경우 awk로 필터링하세요.
grep -rnic 'type="abc_' * | awk -F: '$NF>0'
답변3
다음과 같이 시도해 보세요.
grep -rni 'type="abc_' * |sed -n "s/.*\(abc_[0-9]*\).*/\1/p"|uniq -c| sed "s/\(.*\)\(abc.*\)/\2 found \1 times/"