|
|
|
|
Google-Website
|
|||||||
| Foren | Registrieren | Blog | Man-Seiten | Forum-Regeln | Links | Alben | FAQ | Benutzer | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
![]() |
|
|
Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|||
|
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 |
|
|
|
|||
|
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
doneBeachten Sie, dass diese nicht berücksichtigt mehrere "<td>"-Tags in einer Zeile. |
|
|||
|
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
doneAber 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.. |
|
|||
|
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. |
|
|||
|
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 | ||
|
|
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|
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 |