Gemeinsame Zeilen in zwei Texten finden
Vergleichen Sie apple, banana, cherry, banana, pear mit pear, banana, orange, banana und Sie erhalten banana und pear: jede gemeinsame Zeile einmal, in der Reihenfolge der ersten Liste. Standardmäßig wird exakt verglichen, Großschreibung lässt sich ignorieren. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text a
- apple banana cherry banana pear
- Text b
- pear banana orange banana
- Text
- banana pear
- Gemeinsame Zeilen
- banana, pear
- Anzahl gemeinsam
- 2
- Zeilen von Text A
- 5
Um die Überschneidung zweier eingefügter Listen zu finden, sollten weder eine Tabellenformel noch eine Shell-Pipeline oder eine mühsame manuelle Prüfung nötig sein. Dieses Werkzeug vergleicht zwei mehrzeilige Texte und gibt die eindeutigen Zeilen zurück, die in beiden vorkommen. Das Ergebnis folgt der Reihenfolge des ersten Textes und lässt sich dadurch zuverlässig weiterverarbeiten. Standardmäßig erfolgt ein exakter Vergleich, bei dem Leerzeichen, Satzzeichen sowie Groß- und Kleinschreibung relevant bleiben. Optional können Sie die Großschreibung ignorieren, sodass etwa Apple und apple übereinstimmen, während die Schreibweise des ersten Textes erhalten bleibt. Zeilenenden von Windows, Unix und älteren Mac-Systemen werden vor dem Vergleich vereinheitlicht.
So funktioniert der Vergleich gemeinsamer Zeilen
Die Funktion behandelt jede Eingabe als Folge von Zeilen und berechnet die Schnittmenge beider Folgen. Zunächst werden Zeilenenden mit Wagenrücklauf in einfache Zeilenumbrüche umgewandelt. Dadurch lassen sich eine Windows-Liste und eine Unix-Liste ohne falsche Abweichungen vergleichen, die lediglich aus dem Dateiformat entstehen.
Jede Zeile des zweiten Textes wird zu einem Suchschlüssel. Anschließend wird der erste Text von oben nach unten durchlaufen. Eine Zeile wird ausgegeben, wenn ihr Schlüssel in der zweiten Menge vorhanden ist und noch nicht ausgegeben wurde.
Somit erscheint jede gemeinsame Zeile genau einmal und in der Reihenfolge ihres ersten Auftretens im ersten Text. Standardmäßig ist der Vergleich exakt: führende und nachgestellte Leerzeichen, Satzzeichen, Akzente sowie Groß- und Kleinschreibung beeinflussen die Gleichheit. Leerzeilen sind gültige Werte und erscheinen einmal, wenn beide Eingaben sie enthalten.
Der Algorithmus nutzt begrenzte lineare Durchläufe und weder Netzwerk noch Modell, Zufall oder Uhrzeit.
Praktische Arbeitsabläufe für Listenschnittmengen
Der Vergleich gemeinsamer Zeilen hilft immer dann, wenn zwei Systeme jeweils einen Wert pro Zeile exportieren und Sie die Überschneidung benötigen. Release-Verantwortliche können Paketnamen zweier Bereitstellungen vergleichen und gemeinsame Abhängigkeiten erkennen. Analyseteams können Kundensegmente aus getrennten Berichten einfügen und die in beiden enthaltenen Kennungen erhalten, ohne eine Arbeitsmappe hochzuladen oder einen Join zu schreiben.
Redaktionsteams vergleichen Schlüsselwörter, Tags oder URL und behalten dabei die Prioritätsfolge der ersten Quelle bei. Ebenso lassen sich Vokabellisten, Anwesenheitslisten oder Bestandskennungen zweier Momentaufnahmen schneiden. Beachten Sie bei sensiblen Daten, dass der Vergleich wörtlich und nicht semantisch ist: Ähnliche Domains, Namen oder Pfade werden nicht als dieselbe Sache gedeutet.
Die Funktion entfernt auch keine Leerzeichen, normalisiert kein Unicode, sortiert keine Ergebnisse, zählt keine Wiederholungen und ermittelt keine nur einseitig vorhandenen Zeilen. Diese Entscheidungen verhindern, dass eine unsichtbare Bereinigung Werte zusammenführt, die getrennt bleiben müssen. Bereiten oder normalisieren Sie Ihre Listen bei Bedarf zuerst und verwenden Sie diese Fähigkeit anschließend für den transparenten Schnittmengen-Schritt.
Das Array eignet sich für Anwendungen, der verbundene Text für direktes Kopieren.
Anwendungsfälle
Kennungslisten vergleichen
Finden Sie Konten, Produkte oder Schlüssel in Exporten zweier Systeme und behalten Sie die Reihenfolge des ersten Exports bei.
Tags und Schlüsselwörter schneiden
Ermitteln Sie gemeinsame Tags, Suchbegriffe oder Kategorien, optional ohne Berücksichtigung der Großschreibung.
Bereitstellungsinventare prüfen
Vergleichen Sie Paket- oder Dienstinventare mit einem Eintrag pro Zeile und erhalten Sie die eindeutigen Einträge beider Umgebungen.
Häufige Fragen
Werden wiederholte gemeinsame Zeilen mehrfach ausgegeben?
Nein. Jede übereinstimmende Zeile wird einmal ausgegeben, auch wenn sie in einer Eingabe mehrfach vorkommt.
Ignoriert das Werkzeug Leerzeichen am Zeilenrand?
Nein. Leerzeichen sind relevant; eine Zeile mit nachgestellten Leerzeichen unterscheidet sich von derselben sichtbaren Zeile ohne sie.
In welcher Reihenfolge erscheinen die gemeinsamen Zeilen?
In der Reihenfolge ihres ersten Auftretens im ersten Text, nie alphabetisch und nie nach der zweiten Liste. Deshalb steht im Beispiel banana vor pear, obwohl pear in der zweiten Liste zuerst kommt.
Können Zeilen übereinstimmen, die sich nur in der Großschreibung unterscheiden?
Ja, schalten Sie die Option ein, die Groß- und Kleinschreibung ignoriert, dann passt Apple zu apple. Das Ergebnis behält die Schreibweise des ersten Textes, Ihre ursprüngliche Großschreibung geht also nicht verloren.
Zeigt das Werkzeug auch Zeilen, die nur in einer Liste stehen?
Nein. Es liefert nur die Schnittmenge, also die Zeilen, die in beiden Texten vorkommen. Es zeigt nicht, was auf einer Seite fehlt, sortiert das Ergebnis nicht und zählt keine Wiederholungen.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/str/common-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text_a":"apple\nbanana\ncherry\npear","text_b":"banana\npear\norange"}'const res = await fetch("https://api.kit.forhosting.com/str/common-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text_a": "apple\nbanana\ncherry\npear",
"text_b": "banana\npear\norange"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/common-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text_a": "apple\nbanana\ncherry\npear",
"text_b": "banana\npear\norange"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/common-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text_a":"apple\\nbanana\\ncherry\\npear","text_b":"banana\\npear\\norange"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text_a":"apple\nbanana\ncherry\npear","text_b":"banana\npear\norange"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/common-lines", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text_a": "apple\nbanana\ncherry\npear",
"text_b": "banana\npear\norange"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.common_lines",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_chars_per_text | 65536 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Im Browser und über die API arbeitet dieselbe deterministische Funktion.
So funktioniert der Vergleich gemeinsamer Zeilen
Bei aktiviertem ignore_case werden nur die Vergleichsschlüssel kleingeschrieben; der Rückgabewert behält die ursprüngliche Schreibweise des ersten Textes. Identische Eingaben liefern daher stets dasselbe JSON.
Eingaben auswählen und Ergebnis verstehen
Jedes Feld darf bis zu 65,536 Zeichen enthalten. Der exakte Modus eignet sich für großschreibungssensitive Benutzernamen, Konfigurationsschlüssel, Hashes, Pfade und Codes, bei denen jedes Zeichen zählt. Duplikate in einer Quelle erzeugen keine doppelte Ausgabe, da eine Mengenschnittmenge und keine Zuordnung einzelner Vorkommen berechnet wird. Übergeben Sie text_a und text_b als nicht leere Zeichenfolgen mit den zu vergleichenden Listen oder Textblöcken. Trennen Sie Einträge durch Zeilenumbrüche und lassen Sie ignore_case weg oder auf false, wenn Bezeichner exakt übereinstimmen müssen. Aktivieren Sie ignore_case für Kategorien, Produktnamen, Tags oder Domainlisten, bei denen die Großschreibung unerheblich ist. Die Antwort enthält text als durch Zeilenumbrüche verbundene und kopierbereite Fassung, common_lines mit denselben Werten als JSON-Array sowie common_count mit der Anzahl eindeutiger gemeinsamer Zeilen. Zusätzlich werden die normalisierten Zeilenzahlen beider Eingaben und die angewandte ignore_case-Einstellung gemeldet. Die Reihenfolge stammt aus text_a, nicht aus text_b oder einer alphabetischen Sortierung. Fehlende, leere, nicht textuelle oder zu lange Werte führen zu invalid_input. Eine erfolgreiche API-Verarbeitung kostet $0.002 pro Element; der Browser führt dieselbe reine Logik lokal aus.
Technische Fragen
Welche Eingabe bestimmt die Reihenfolge?
Der erste Text bestimmt die Reihenfolge. Gemeinsame Zeilen folgen ihrem ersten Auftreten in text_a.
Was ändert ignore_case?
Die Option vergleicht kleingeschriebene Schlüssel, erhält im Ergebnis aber die ursprüngliche Schreibweise aus text_a.
Was kostet eine API-Anfrage?
Eine erfolgreiche API-Anfrage kostet $0.002 pro Element. Die Webversion führt dieselbe deterministische Logik lokal aus.