Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 02 jun 2020, 12:58



Svara på tråd  [ 2 inlägg ] 
 Script med hjälp av "sed" söker igenom html text & filtrera 
Författare Meddelande

Blev medlem: 10 nov 2016, 11:39
Inlägg: 9
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS
Svara med citat
Inlägg Script med hjälp av "sed" söker igenom html text & filtrera
Script med hjälp av sed söker igenom alla html-sidor

Hejsan, jag håller på med en uppgift där jag ska skriva ett script som med hjälp av "sed" söker igenom alla html-sidor(html,htm) rekursivt från den plats du specificerar(argumentet till scriptet). och för varje fil ska allt före taggen <body> och allt efter taggen </body> plockas bort och sparas i en ny fil som heter _nobody.

Jag har skapat en fil som heter index.html med följande information i.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Linux</title>
</head>
<body style="background-color:black;">
<div style="width:100%; height:123px; margin-top:150px; text-align:center">
<img src="images/rule.png" width="428" height="123" alt="Check" />
</div>
</body>
</html>

Det är alltså bara det här som ska synas och sparas i den nya filen(_nobody) när jag kör scriptet.

<div style="width:100%; height:123px; margin-top:150px; text-align:center">
<img src="images/soon.png" width="428" height="123" alt="Check back soon" />
</div>

Jag har skrivit följande script med får det inte att fungera.. så tänkte höra om ni har några tips på hur jag skulle kunna göra istället för jag har kört fast.

#!/bin/bash

for file in $( ls $1 -r );
do
if [ -d $file ];
then
find -type f -name "*.html" -o -name "*.htm" -exec sh -c `sed '0,/<body/ {/<body/! d ; /<body/ s/.*<body[^>]*>// } ; \|</body|,$ { \|</body|! d ; \|</body | s|</body.* || } ;' "{}"> "{}_nobody" \;

echo "Done!"

exit 0

else

echo "Unvalid path, please try again."

exit 1

fi

done


06 dec 2016, 16:31
Profil
Hedersmedlem
Användarvisningsbild

Blev medlem: 27 maj 2006, 12:24
Inlägg: 3777
Ort: Stockholm
OS: Ubuntu
Svara med citat
Inlägg Re: Script med hjälp av "sed" söker igenom html text & filtr
Utnyttja möjligheten till pipes ordentligt, tex
Kod:
find -type f -name "*.html" -o -name "*.htm" | while read line ; do <"$line" sed '0,/^<body/d | sed '/^</body/,$d' > "$line_headerless" ; done


Känns detta onaturligt kanske du bör titta på seds hold space (mot pattern space som du redan jobbar med) eller byta verktyg mot t.ex. awk, perl eller python?

_________________
More Mekaniserad at http://blippe.se.


19 dec 2017, 23:57
Profil WWW
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 2 inlägg ] 

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 9 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
cron
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011