hoge.txt
hogefugapiyohogefugapiyo
hogehogehogehogehogehoge
Wenn Sie die Anzahl der "hoge" aus einer solchen Datei wissen möchten. (Übrigens 8)
Ich habe versucht, die Anzahl der Vorkommen mit dem integrierten Befehl herauszufinden, aber es hat nicht funktioniert, also habe ich ein Skript in Python geschrieben. (Weil grep möglicherweise nicht in der Lage ist, mehrere Vorkommen in einer Zeile zu verarbeiten.)
match_count.py
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import sys
import os.path
def clean_args(args):
if len(args) == 2:
search_word = args[1]
return (True, None, search_word)
if len(args) != 3:
print "[Usage] match_count.py $filename $search_word"
return (False, None, None)
target_file_path = args[1]
search_word = args[2]
if not os.path.exists(target_file_path):
print "[Error] File is not exist."
return (False, None, None)
return (True, target_file_path, search_word)
def count_words(filename, search_word):
if filename is not None:
# python 2.Weil es 4 war, kann ich nicht mit verwenden
stream = open(filename, 'r')
counter = _count(stream, search_word)
stream.close()
return counter
else :
return _count(sys.stdin, search_word)
def _count(stream, search_word):
counter = 0
for line in stream:
counter += line.count(search_word)
return counter
def main():
args = sys.argv
(is_valid, filename, search_word) = clean_args(args)
if not is_valid:
sys.exit()
print count_words(filename, search_word)
if __name__ == '__main__':
main()
Erstellen Sie diese Datei unter Linux und erteilen Sie ihr die Ausführungsberechtigung.
$ ./match_count.py hoge.txt hoge
8
Sie können die Nummer erhalten, die mit hoge wie folgt übereinstimmt.
Ich habe auch versucht, Rohre zu stützen
$ cat hoge.txt | ./match_count.py hoge
8
Sie können es auch verwenden, wenn Sie möchten. Ich frage mich, ob es besser ist, wenn ich mehrere Dateien katze.
Recommended Posts