Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Textdatei durchsuchen und an genauer Position Text einfügen

  1. #1
    Premium Mitglied Avatar von MHage
    Registriert seit
    Jan 2001
    Beiträge
    381

    Textdatei durchsuchen und an genauer Position Text einfügen

    Hallo zusammen,

    ich möchte eine html Datei durchsuchen und an einer bestimmten, gefundenen Position den immer gleichen Text einfügen.

    Das schaut so aus: <a href="apps/database/">Database</a>

    Aussehen sollte es aber so: <a href="apps/database/index.html">Database</a>

    Es geht also darum, an die Verlinkung immer "index.html" anzufügen. Der Linkpfad ist dabei natürlich immer ein anderer. Leider sind es viele hundert Positionen an denen ich das ändern müsste. Eine manuelle Suche fällt also aus. Im Gegenteil, es ist nicht nur eine Datei die durchsucht werden müsste, es sind unzählige. Es wird also sicher ein Skript werden müssen.

    Zunächst ist aber erstmal wichtig überhaupt die Verlinkungen in einer Datei zu finden und die Position im Pfad.

    Hoffe, einer von euch hat eine Idee...

    Gruß
    Matze

  2. #2
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    https://stackoverflow.com/questions/...x-command-line
    Ergänzend, da du im Suchbegriff schon Schrägstriche hast, bietet es sich an das Trennzeichen zu tauschen - sa https://backreference.org/2010/02/20...sed/index.html

    Demo:
    Code:
    nopes@deb_dev_01:~/Develop/srmf$ mkdir d1
    nopes@deb_dev_01:~/Develop/srmf$ mkdir d1/s1
    nopes@deb_dev_01:~/Develop/srmf$ mkdir d1/s2
    nopes@deb_dev_01:~/Develop/srmf$ echo '<html><head></head><body><p><a href="apps/database/">Database</a></p>'  > d1/s1/p1.html
    nopes@deb_dev_01:~/Develop/srmf$ echo '<html><head></head><body><p>test<a href="apps/database/">Database</a></p>'  > d1/s1/p2.html
    nopes@deb_dev_01:~/Develop/srmf$ echo '<html><head></head><body><p>test<a href="apps/database/" title="foo">Database</a> test</p>'  > d1/s2/p3.html
    nopes@deb_dev_01:~/Develop/srmf$ echo '<html><head></head><body><p>test<a href="apps/database/" title="foobar">Database</a> test</p>'  > d1/s2/p4.html
    nopes@deb_dev_01:~/Develop/srmf$ echo sed -ie 's#<a href="apps/database/">Database</a>#<a href="apps/database/tata.html">Database</a>#g' $(find . -type f -name '*.html')
    nopes@deb_dev_01:~/Develop/srmf$ cat d1/s1/p1.html
    <html><head></head><body><p><a href="apps/database/tata.html">Database</a></p>
    Oder halt mit jedem besseren Editor, sa:
    https://www.gnu.org/software/emacs/m...ple-files.html
    https://vim.fandom.com/wiki/Search_a...ltiple_buffers
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  3. #3
    Premium Mitglied Avatar von MHage
    Registriert seit
    Jan 2001
    Beiträge
    381
    Ich glaube, das trifft das Problem nicht ganz...

    Nehmen wir mal folgende Zeile:

    Code:
    <font size=2><a href="prime/docs/">Documentation</a>, <a href="prime/games/">Games</a>, <a href="prime/graphics/">Graphics and Plotting</a>, <a href="prime/math/">Math</a>, <a href="prime/apps/">Miscellaneous Applications</a>, <a href="prime/pc/">PC Programs</a>, <a href="prime/programming/">Programming Tools</a>, <a href="prime/science/">Science Apps</a>, <a href="prime/utils/">Utilities</a></font><br>
    Im Editor ist das eine Zeile. In dem Fall Zeile 100, ist aber auch nicht ganz so wichtig. Wie man sieht, kann es in einer Zeile mehrere Änderungen geben.

    Zunächst habe ich versucht die Zeile in der Datei zu finden:

    Code:
    grep -aob '[">]' index.html | grep -oE '[0-9]+'
    Dieser Befehl gibt mir auf der Konsole mehrere hundert Zahlen (Zeilen) zurück. Halt überall dort, wo [">] gefunden wurde. Leider weiß ich dadurch die Spalte noch nicht.


    Der nächste Befehl :

    Code:
    sed -i -e '100s/./&index.html/33' index.html
    Fügt mir in Zeile 100 an Position 33 index.html ein. Soweit, so gut...

    Ich kriege aber derzeit die Spalte nicht raus. Naja, und das ganze müsste dann noch in ein Skript, falls es nicht auf der Kommandozeile in eine Zeile passt.

    Hoffe, mir kann noch jemand weiterhelfen.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    Code:
    sed -ier 's/(<a href="[^"]+)"/\1index.html"/g' $(find . -type f -name '*.html')
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

Ähnliche Themen

  1. vi - Text aus Zwischenablage einfügen
    Von Pumuckl im Forum Anwendungen Allgemein, Software
    Antworten: 3
    Letzter Beitrag: 04.07.14, 14:34
  2. Massenhaft PDF Dokumente nach Text durchsuchen..
    Von elsefi im Forum Anwendungen Allgemein, Software
    Antworten: 7
    Letzter Beitrag: 05.10.10, 14:31
  3. Partition (RAW) nach Text durchsuchen
    Von germandev im Forum Linux Allgemein
    Antworten: 5
    Letzter Beitrag: 05.02.10, 16:42
  4. Textdateien durchsuchen und text austauschen
    Von jockelb im Forum Anwendungen Allgemein, Software
    Antworten: 3
    Letzter Beitrag: 17.12.07, 11:56
  5. wie kann ich var in textdatei einfügen?
    Von stevennuernberg im Forum Linux Allgemein
    Antworten: 1
    Letzter Beitrag: 28.11.03, 15:08

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •