Benutzer:Andreas Plank/Hilfreiche Kommandos für Text-Suche oder Text-Prozessierung (Linux): Unterschied zwischen den Versionen

Aus Open Source Ecology - Germany
Zur Navigation springen Zur Suche springen
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Nur die ersten 3 Textfunde ausgeben und mehr nicht (hier XML-Beispiel):
 
Nur die ersten 3 Textfunde ausgeben und mehr nicht (hier XML-Beispiel):
cat Eine-RDF-oder-XML-Datei.rdf | awk '/<\?xml/ {zaehlefund++; if(zaehlefund>3){auszugeben=0}else{auszugeben=1}}; auszugeben {print};'
+
<syntaxhighlight lang="bash">
 +
cat Eine-RDF-oder-XML-Datei.rdf | awk '/<\?xml/ {zaehlefund++; if(zaehlefund>3){auszugeben=0}else{auszugeben=1}}; auszugeben {print};'
 
  # Such-Übereinstimmung abgezählt ausgeben (bis zum 3. Mal)
 
  # Such-Übereinstimmung abgezählt ausgeben (bis zum 3. Mal)
 
  cat A-RDF-or-XML-file.rdf | awk '/<\?xml/ {countxml++; if(countxml>3){printing=0}else{printing=1}}; printing {print};'
 
  cat A-RDF-or-XML-file.rdf | awk '/<\?xml/ {countxml++; if(countxml>3){printing=0}else{printing=1}}; printing {print};'
 
  # count search match and print it until the 3rd time
 
  # count search match and print it until the 3rd time
 +
</syntaxhighlight>
  
 
== Telegram-Plausch Such-Marker ==
 
== Telegram-Plausch Such-Marker ==
Zeile 13: Zeile 15:
 
<syntaxhighlight lang="bash" style="font-size:smaller;">
 
<syntaxhighlight lang="bash" style="font-size:smaller;">
 
# sed -nr ist Kurzbefehl für sed --silent --regexp-extended  
 
# sed -nr ist Kurzbefehl für sed --silent --regexp-extended  
sed -nr '# stillschweigend suchen
+
sed --regexp-extended --silent '# stillschweigend suchen
 
   s@>(#[^<>]+)</a>@\nSuch-Marker: \1\n@gp;  
 
   s@>(#[^<>]+)</a>@\nSuch-Marker: \1\n@gp;  
 
   # suche <a>#…</a>  
 
   # suche <a>#…</a>  
Zeile 19: Zeile 21:
 
   # gp → g=globales Suchen, p=print, Ersetzung ausgeben
 
   # gp → g=globales Suchen, p=print, Ersetzung ausgeben
 
' ~/Heruntergeladen/Telegram\ Desktop/ChatExport_2022-05-26/messages*.html \
 
' ~/Heruntergeladen/Telegram\ Desktop/ChatExport_2022-05-26/messages*.html \
   | grep -i 'Such-Marker' \
+
   | grep --ignore-case 'Such-Marker' \
   | sort | uniq --count | sort -k3 \
+
   | sort | uniq --count --ignore-case | sort -k3 \
   > ~/Kanal-xy-Such-Marker_$(date '+%Y%m%d-%H%M').txt
+
   > Kanal-xy-Such-Marker_$(date '+%Y%m%d-%H%M').txt
 
   # grep        → nur die Zeilen mit „Such-Marker“ herausfischen
 
   # grep        → nur die Zeilen mit „Such-Marker“ herausfischen
 
   # sort        → vorsortieren
 
   # sort        → vorsortieren
   # uniq --count → einzelich machen aber zusammenzählen
+
   # uniq --count → einzelich machen aber auf- und zusammenzählen
 +
  # uniq --ignore-case → GROß-klein-Schreibung als wortgleich verarbeiten
 
   # sort -k3    → zusammenbezählte Such-Marker nach 3. Spalte (die Suchmarker-Spalte) sortieren
 
   # sort -k3    → zusammenbezählte Such-Marker nach 3. Spalte (die Suchmarker-Spalte) sortieren
 +
  # Beispiel-Ergebnis:
 +
  # 1  Such-Marker:  #wohlhäblich
 +
  # 1  Such-Marker:  #worlich
 +
  # 14  Such-Marker:  #Wortbedeutung
 +
  # 5  Such-Marker:  #Wortbedeutungen
 +
  # 18  Such-Marker:  #Wörterbuch
 
</syntaxhighlight>
 
</syntaxhighlight>

Aktuelle Version vom 14. November 2022, 19:29 Uhr

Nur die ersten 3 Textfunde ausgeben und mehr nicht (hier XML-Beispiel):

cat Eine-RDF-oder-XML-Datei.rdf | awk '/<\?xml/ {zaehlefund++; if(zaehlefund>3){auszugeben=0}else{auszugeben=1}}; auszugeben {print};'
 # Such-Übereinstimmung abgezählt ausgeben (bis zum 3. Mal)
 cat A-RDF-or-XML-file.rdf | awk '/<\?xml/ {countxml++; if(countxml>3){printing=0}else{printing=1}}; printing {print};'
 # count search match and print it until the 3rd time

Telegram-Plausch Such-Marker

Suchmarker eines Telegram-Kanals herauslesen (und durchzählen):

  1. mit Telegram-Desktop-Programm ein „Chatexport“ ausführen lassen (über das Gruppen-Menü ⋮, nur das HTML zu entnehmen ist hinreichend genug)
  2. Speicherpfad ggf. im Skript anpassen (hier liegt aller Plausch/Geschreibe (Chat) im persönlichen Verzeichnis ~/Heruntergeladen/Telegram\ Desktop/ChatExport_2022-05-26 vor jeweils die messages*.html)
# sed -nr ist Kurzbefehl für sed --silent --regexp-extended 
sed --regexp-extended --silent '# stillschweigend suchen
  s@>(#[^<>]+)</a>@\nSuch-Marker: \1\n@gp; 
  # suche <a>#…</a> 
  # → ersetze: \nSuch-Marker: #gefundener-Suchmarker\n
  # gp → g=globales Suchen, p=print, Ersetzung ausgeben
' ~/Heruntergeladen/Telegram\ Desktop/ChatExport_2022-05-26/messages*.html \
  | grep --ignore-case 'Such-Marker' \
  | sort | uniq --count --ignore-case | sort -k3 \
  > Kanal-xy-Such-Marker_$(date '+%Y%m%d-%H%M').txt
  # grep         → nur die Zeilen mit „Such-Marker“ herausfischen
  # sort         → vorsortieren
  # uniq --count → einzelich machen aber auf- und zusammenzählen
  # uniq --ignore-case → GROß-klein-Schreibung als wortgleich verarbeiten
  # sort -k3     → zusammenbezählte Such-Marker nach 3. Spalte (die Suchmarker-Spalte) sortieren
  # Beispiel-Ergebnis:
  # 1   Such-Marker:  #wohlhäblich
  # 1   Such-Marker:  #worlich
  # 14  Such-Marker:  #Wortbedeutung
  # 5   Such-Marker:  #Wortbedeutungen
  # 18  Such-Marker:  #Wörterbuch