Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google-Website



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 12-05-2008
Registrierte Nutzer
 

Join Date: Feb 2008
Beiträge: 53
Löschen von Zellen in einer Tabelle in einem Skript

Ich möchte sed oder awk, dies zu tun, aber ich bin schwach auf beiden zusammen mit RE. Nach einer Möglichkeit suchte, mit sed oder awk zu zählen für das 7. Tabellendaten innerhalb einer Tabelle, und wenn die Bedingung erfüllt ist zu streichen "<td> und alles, was zwischen </ td>". Da die Header-Tabelle auf einem bestimmten Zeile jedes Mal, dass ich löschen können mit sed einfach.

Ratlos, wie man von den anderen Daten in dieser Spalte. Auch die Tabelle das Skript ruft kann in Länge und das ist der Grund, warum ich es gescriptete wie ich beschrieben habe. Wenn Sie noch bessere Ideen zu haben, ich bin offen zu ihnen.


Für diejenigen, die wie GUI's hier ist ein einfaches Diagramm:


Code:
qrstuvwxyz
qrstuvwxyz
qrstuvwxyz


Code:
qrstuvwyz
qrstuvwyz
qrstuvwyz

Sponsored Links
  #2 (permalink)  
Old 12-05-2008
otheus's Avatar
otheus otheus is offline Forum Advisor  
Moderator ala-Modus
 

Join Date: Feb 2007
Ort: Innsbruck, Österreich
Beiträge: 1906
Zitat:
Zitat von phpfreak View Post
Nach einer Möglichkeit suchte, [...] zu zählen für das 7. Tabelle Daten in einer Tabellenzeile
Meinen Sie damit * alle * 7. Auftreten von <td> innerhalb * alle * <tr> in einer Datei?
  #3 (permalink)  
Old 12-05-2008
Registrierte Nutzer
 

Join Date: Feb 2008
Beiträge: 53
Fast gibt ...


Code:
sed -n '/<tr>/,/<\/tr> {
           s/.*<tr>//
           s/<\/tr>.*//
           p
           }' /path/to/my/file

Das ist richtig. Wenn diese Bedingung erfüllt ist Ich brauche es, um die oben genannten. Danke.
  #4 (permalink)  
Old 12-05-2008
Registrierte Nutzer
 

Join Date: Aug 2008
Beiträge: 92
Dies ist die einfachste Antwort, wenn die Daten der Tabelle ist die gleiche und nur in diesem 7. Tabellendaten und nirgendwo sonst können Sie diese:


Code:
 
cat myfile |sed 's|<td>x</td>||g'

HINWEIS
Ich bin mit "|" als Trennzeichenn und nicht "/" so dass ich nicht auf der Flucht "/" in "</ td >"...


Allerdings, wenn Sie andere Tabelle Datenfelder mit dem gleichen Text und Sie möchten, dass diese anderen Cels können Sie verwenden möchten, eine Schleife zu analysieren, die Zeichen und Anzahl der "<td>" Ereignisse und dann einen Test, um herauszufinden, ob diese cel mit, was Sie suchen, bevor die sed.

Einfaches Beispiel für LOOP:


Code:
OUTFILE=/some/file
TD=0
CT=0
cat myfile |while read LINE
do
    # Check to see if the LINE is non-empty, and has a <td> tag in it.
    if [ -n "$LINE" -a `echo $LINE |grep "<td>"` != "" ]
    then
        # Increase the TD counter by 1
        CT=`echo "$CT+1" |bc`
        
        # Check to see if the TD counter is at 6 (we are at 7th TD as the counter starts at 0 not 1)
        if [ "$CT" -eq 6 ]
        then
            # Use sed to remove this TD tag
            echo $LINE |sed 's|<td>x</td>||' >> $OUTFILE
        else 
            echo $LINE >> $OUTFILE
        fi
    else
        echo $LINE >> $OUTFILE
    fi
    
    # If we are leaving a table row the we need to reset the TD counter!
    if [ -n "$LINE" -a `echo $LINE |grep "</tr>"` != "" ]
        CT=0
    fi
done

Beachten Sie, dass diese nicht berücksichtigt mehrere "<td>"-Tags in einer Zeile.
  #5 (permalink)  
Old 12-05-2008
Registrierte Nutzer
 

Join Date: Feb 2008
Beiträge: 53
Ok ich denke, ich und ich werde mit meinem kombinieren sed Skript zu testen. Bitte überprüfen Sie unten, wie ich es haben einige Änderungen. Denken Sie daran, mein Ziel ist es, alles, was zwischen den Tabellendaten-Tags und den Inhalt innerhalb variieren, es nie mehr dieselbe sein.



Code:
#!/bin/sh

#TD=0
CT=0
cat oldfile.html |while read LINE
do
    # Check to see if the LINE is non-empty, and has a <td> tag in it.
    if [ -n "$LINE" -a `echo $LINE |grep "<td>"` != "" ]
    then
        # Increase the TD counter by 1
        CT=`echo "$CT+1" |bc`
        
        # Check to see if the TD counter is at 6 (we are at 7th TD as the counter starts at 0 not 1)
        if [ "$CT" -eq 6 ]
        then
            # Use sed to remove this TD tag AND everything in between
            echo $LINE |sed -n '/<tr>/,/<\/tr> {
					    s/.*<tr>//
					    s/<\/tr>.*//
					    p
					    }' >> newfile.html
        else 
            echo $LINE >> newfile.html
        fi
    else
        echo $LINE >> newfile.html
    fi
    
    # If we are leaving a table row the we need to reset the TD counter!
    if [ -n "$LINE" -a `echo $LINE |grep "</tr>"` != "" ]
        CT=0
    fi
done

Aber ich habe zwei Fragen zu Ihrem Script. Was ist das für var TD? Hinweis Ich habe kommentiert sie jetzt. Schließlich, da Sie CT auf 0, auf die ersten zählen wird: 0, 1 richtig?

Zuletzt bearbeitet von phpfreak; am 12-05-2008 06:45 AM..
  #6 (permalink)  
Old 12-05-2008
Registrierte Nutzer
 

Join Date: Aug 2008
Beiträge: 92
OK, habe ich eine Datei mit dem Namen testHTM.txt mit den folgenden


Code:
$ cat testHTM.txt
<table>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
</table>

dann lief ich vor, dass diese Datei


Code:
$ OUT=`cat testHTM.txt` && echo $OUT |sed 's/<td>[x-z]<\/td>//1'
<table> <tr>  <td>y</td> <td>z</td> </tr> </table>

$ OUT=`cat testHTM.txt` && echo $OUT |sed 's/<td>[x-z]<\/td>//2'
<table> <tr> <td>x</td>  <td>z</td> </tr> </table>

$ OUT=`cat testHTM.txt` && echo $OUT |sed 's/<td>[x-z]<\/td>//3'
<table> <tr> <td>x</td> <td>y</td>  </tr> </table>

Beachten Sie die Einstellung des Ereignisses Sie ändern möchten, am Ende der Zeile ... Einstellung so zu handhaben Auftreten 1 wird die "<td> x </ td>" und die Einstellung, um Auftreten 2 Entfernt "<td> y </ td>" und so weiter.

Platzieren Sie diesen Code in einer Schleife prüfen, ob Sie sich in "<tr>" und "</ tr>"-Tags und-Einstellung, um Auftreten 7 würde es tun.
  #7 (permalink)  
Old 12-05-2008
Registrierte Nutzer
 

Join Date: Aug 2008
Beiträge: 92
oops yeah TD wurde eine zusätzliche, dass ich nie so sicher zu kommentieren / entfernen

und der CT-Frage:


Code:
    if [ -n "$LINE" -a `echo $LINE |grep "<td>"` != "" ]
    then
        # Increase the TD counter by 1
        CT=`echo "$CT+1" |bc`
        
        # Check to see if the TD counter is at 6 (we are at 7th TD as the counter starts at 0 not 1)
        if [ "$CT" -eq 6 ]

Sie sollten "EQ-6" bis "-EQ-7", wie wir, bevor wir Inkrement-Test ... wieder oops
Sponsored Links
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Aus


Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Wie DB2-Tabelle, um eine Verbindung mit Shell-Skript dtidke Shell Programmierung und Scripting 0 06-24-2008 06:18 AM
Erste Script: Query jede Tabelle mit Spalte xxx. Bosheit Shell Programmierung und Scripting 1 02-06-2007 04:15 PM
ALTER TABLE-Shell-Script ankitgupta Shell Programmierung und Scripting 2 10-06-2006 07:01 AM
Lesen einer Tabelle in ein Shell-Skript luiscarvalheiro Shell Programmierung und Scripting 13 08-10-2006 07:16 PM
nicht in der Lage, um genug Zellen für Graustufen raz Solaris 1 10-04-2004 02:47 PM



Alle Zeiten sind GMT -4. Es ist jetzt 09:27 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Inhalt-Copyright © 1993-2010. Alle Rechte Reserved.Ad Management by RedTyger

Content Relevant URLs durch vBSEO 3.2.0