Ich wollte wissen, welche Algorithmen sie intern verwenden und wie man einen bestimmten Algorithmus für eine bestimmte Aufgabe intelligent entscheidet. Wenn sort beispielsweise eine große Eingabedatei erhält, werden unterschiedliche Algorithmen für unterschiedliche Datengrößen verwendet?
Das ist eine interessante Frage (+1 dafür). Ich habe keine Ahnung, wie die Antwort lautet, aber wenn ich Sie wäre, würde ich mir den Quellcode typischer GNU-Dienstprogramme ansehen, um eine Vorstellung von deren Algorithmen zu bekommen.
Wechselt grep intelligent bei der Suche nach verschiedenen Datensätzen zwischen Algorithmen?
Das glaube ich nicht. Zitiere mich nicht, da ich es dir nicht mit 100% iger Sicherheit sagen kann, aber ich denke wirklich nicht. Die UNIX-Philosophie der Dinge ist, dass eine Sache eine Sache und nur eine Sache tut. Deshalb haben wir mehrere Versionen von grep (haben grep
, egrep
, fgrep
).
Die Idee ist auch, eine Sache und nur eine Sache zur Laufzeit zu tun. Unterschiedliche Verhaltensweisen und Algorithmen können als Befehlszeilenargumente konfiguriert werden, sodass dasselbe Programm zwischen den Läufen leicht unterschiedlich (und möglicherweise etwas optimierter) agieren kann. Gute Beispiele sind der Befehl wc
und diff
.
Die Verhaltensanpassung ist jedoch konfigurationsbasiert (über cmd-Zeilenargumente). Sie ändern / passen das Verhalten zur Laufzeit nicht an. Es ist normalerweise eine unnötige Komplexität für die Art von Artefakten, die die UNIX-Tools anstreben.
Diese Komplexität ist besser geeignet für komplexere, weniger universelle Tools IMO.
grep
,egrep
oderfgrep
.