반응형
파일 내에서 문자열의 발생을 어떻게 계산할 수 있습니까?
이 코드를 예로 들어 보겠습니다. HTML / 텍스트 파일 인 것처럼 가장하여 echo
나타나는 총 횟수를 알고 싶다면 bash를 사용하여 어떻게 할 수 있습니까?
new_user()
{
echo "Preparing to add a new user..."
sleep 2
adduser # run the adduser program
}
echo "1. Add user"
echo "2. Exit"
echo "Enter your choice: "
read choice
case $choice in
1) new_user # call the new_user() function
;;
*) exit
;;
esac
그러면 검색 문자열이 포함 된 줄 수가 출력됩니다 .
grep -c "echo" FILE
그러나 이것은 파일의 발생 횟수를 계산하지 않습니다 (즉, 한 줄에 여러 번 에코가있는 경우).
편집하다:
조금 놀아 본 후, 다음과 같은 코드를 사용하여 발생 횟수를 얻을 수 있습니다.
sed 's/echo/echo\n/g' FILE | grep -c "echo"
이것은 기본적으로 모든 echo 인스턴스 다음에 개행을 추가하여 각각 자체 라인에 있으므로 grep이 해당 라인을 계산할 수 있습니다. 예를 들어 "echoing"이 아닌 "echo"라는 단어 만 원하는 경우 정규식을 구체화 할 수 있습니다.
with option 및 (word count)를 사용하여 문자열 발생 횟수 ( lines 아님)를 얻을 수 있습니다 .grep
-o
wc
$ echo "echo 1234 echo" | grep -o echo
echo
echo
$ echo "echo 1234 echo" | grep -o echo | wc -l
2
따라서 문제에 대한 전체 솔루션은 다음과 같습니다.
$ grep -o "echo" FILE | wc -l
나는 당신이 요구하는 것을 이해하지 못하기 때문에 여기에서 몇 가지 추측을하고 있습니다.
나는 당신이 원하는 것은 주어진 파일에 'echo'패턴이 나타나는 줄 수라고 생각합니다.
샘플 텍스트를 6741967
.
먼저 grep
일치하는 항목을 찾습니다.
james@Brindle:tmp$grep echo 6741967
echo "Preparing to add a new user..."
echo "1. Add user"
echo "2. Exit"
echo "Enter your choice: "
둘째, wc -l
줄을 세는 데 사용
james@Brindle:tmp$grep echo 6741967 | wc -l
4
발생 횟수 만 원하면 다음과 같이 할 수 있습니다. $ grep -c "string_to_count"file_name
반응형
'developer tip' 카테고리의 다른 글
S3 및 AWS 콘솔을 사용하여 하위 폴더가있는 폴더 업로드 (0) | 2020.11.29 |
---|---|
YouTube : 음소거 된 동영상 임베드 방법 (0) | 2020.11.29 |
x86 어셈블리에서 leave가 "mov esp, ebp"를 수행하는 이유는 무엇입니까? (0) | 2020.11.28 |
HTML5 속성을 인용합니까? (0) | 2020.11.28 |
파이썬의 제네릭 / 템플릿? (0) | 2020.11.28 |