grep을 사용하여 여러 문자열의 발생 횟수를 가져옵니다.

grep을 사용하여 여러 문자열의 발생 횟수를 가져옵니다.

내 주요 파일(log1.txt) 문자열은 다음과 같습니다.

T202210010515.XX.old:2022-10-01 10:57:56<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:59:56<Other Texts>975673449<0ther Texts>975673449
T202210010515.XX.old:2022-10-01 10:57:58<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:59:51<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:57:52<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:59:59<Other Texts>975673449<0ther Texts>975673449

각 세트는 T202210*으로 시작됩니다. 해당 숫자를 grep하고 해당 숫자가 나타나는 행 수를 반환해야 합니다. 검색해야 하는 모든 숫자가 포함된 또 다른 보조 파일(numbers.txt)이 있습니다. 이것은 내가 필요한 출력, 즉 숫자와 각 숫자의 행 수입니다.

975673849 -4
975673449 -2

이것이 나의 시도이다.

grep -f numbers.txt log1.txt

그러나 이렇게 하면 강조 표시된 숫자가 있는 모든 문자열 줄이 생성됩니다. 누군가 내가 실제로 필요한 결과물을 생산하도록 도와줄 수 있나요?

답변1

그러면 작동합니다.

╰─$ cat log1.txt                                                                                                                                                                                             130 ↵
T202210010515.XX.old:2022-10-01 10:57:56<Other Texts>975673849<0ther Texts>975673849
 T202210010515.XX.old:2022-10-01 10:58:56<Other Texts>975673849<0ther Texts>975673849
╰─$ cat numbers.txt 
975673849
975673449
╰─$ while read -r line; do echo "$line" && cat log1.txt | grep -c "$line"  ; done < numbers.txt
975673849
2
975673449
0

관련 정보