nikosdimos Δημοσ. 3 Σεπτεμβρίου 2007 Share Δημοσ. 3 Σεπτεμβρίου 2007 Καλησπέρα. Έχω ένα αρχείο μέσα στο οποίο έχω κάποια URL τα οποία αυτά URL θέλω να τα μετατρέψω σε links Για να το κάνω πιο παραστατικό. Έχω ένα αρχέιο που είναι κάπως έτσι: >http://trexa.gyrevopoulos.com/1 http://trexa.gyrevopoulos.com/2 http://trexa.gyrevopoulos.com/3 http://trexa.gyrevopoulos.com/4 http://trexa.gyrevopoulos.com/5 http://trexa.gyrevopoulos.com/6 http://trexa.gyrevopoulos.com/7 και θέλω να τα μετατρέψω ώστε να είναι έτσι: ><a href=http://trexa.gyrevopoulos.com/1>1</a> <a href=http://trexa.gyrevopoulos.com/2>2</a> <a href=http://trexa.gyrevopoulos.com/3>3</a> <a href=http://trexa.gyrevopoulos.com/4>4</a> <a href=http://trexa.gyrevopoulos.com/5>5</a> <a href=http://trexa.gyrevopoulos.com/6>6</a> <a href=http://trexa.gyrevopoulos.com/7>7</a> Tα 1,2,3 που έβαλα στο <a href=...><--ΕΔΩ--></a> μπορεί να προέρχονται και από μια αύξουσα αρίθμηση. Δεν σημαίνει δηλαδή οτι έχει απαραίτητα κάποια σχέση με τα 1,2,3 που είναι στο href Ευχαριστώ όποιον μπορέσει να με βοηθήσει. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nikosdimos Δημοσ. 3 Σεπτεμβρίου 2007 Μέλος Share Δημοσ. 3 Σεπτεμβρίου 2007 Βρήκα λύση στο πρόβλημά μου. Κατέβασα το Greasemonkey και με αυτό έδω το userscript έκανα ακριβώς αυτό που ήθελα. Παρόλα αυτά αν κάποιος μόνο και μόνο για την γνώση που θα μπορούσε να προσφέρει και στους υπόλοιπους σχετικά με το shell scripting μπορεί να δώσει μια λύση είναι παραπάνω από ευπρόσδεκτη. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 3 Σεπτεμβρίου 2007 Share Δημοσ. 3 Σεπτεμβρίου 2007 Με την sed: http://www.oracle.com/technology/pub/articles/dulaney_sed.html Όποτε μπορέσω, θα κάνω μερικές δοκιμές και αν βγαίνει σωστό το σκριπτάκι, θα το ποστάρω... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 3 Σεπτεμβρίου 2007 Share Δημοσ. 3 Σεπτεμβρίου 2007 κάτι τέτοιο; >y=1; for x in `cat file.txt`; do echo "<a href=$x>$y</a>"; let y+=1; done ΥΣ. ή πιο γκουρουδίστικα: >while read line; do a=${line##*\/}; printf "<a href=%s>%s</a>\n" "$line" "$a"; done<file.txt Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nikosdimos Δημοσ. 3 Σεπτεμβρίου 2007 Μέλος Share Δημοσ. 3 Σεπτεμβρίου 2007 κάτι τέτοιο; >y=1; for x in `cat file.txt`; do echo "<a href=$x>$y</a>"; let y+=1; done ΥΣ. ή πιο γκουρουδίστικα: >while read line; do a=${line##*\/}; printf "<a href=%s>%s</a>\n" "$line" "$a"; done<file.txt Ωραίος nske δούλεψε αυτό που πρότεινες.:wink: Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
apoikos Δημοσ. 3 Σεπτεμβρίου 2007 Share Δημοσ. 3 Σεπτεμβρίου 2007 Και άλλο ένα ;-) > sed -e 's/\(.*\/\)\(.*\?\)$/<a href="\1\2">\2<\/a>/' -i filename ή μέσα από vim σε command mode: > :%s/\(.*\/\)\(.*\)\?$/<a href="\0">\2<\/a>/ There's more than one way to do it ;-) [μεγάλος-master-mode] @nikosdimos και υπόλοιποι και χωρίς καμία διάθεση να κάνω υποδείξεις αριστερά δεξιά ούτε να το παίξω παντογνώστης: Πολλές φορές, προερχόμενοι από μακροχρόνια χρήση Άλλων Λειτουργικών® τείνουμε να αντιμετωπίζουμε το Linux σαν να ήταν κάποιο από τα Άλλα Λειτουργικά®. Η αντιμετώπιση αυτή μας οδηγεί στο να παίρνουμε μη-βέλτιστες αποφάσεις, ψάχνοντας το προγραμματάκι εκείνο που κάνει ακριβώς τη δουλειά που θέλουμε, ενώ κάτι στο πίσω μέρος του μυαλού μας μας λέει ότι θα έπρεπε τα πράγματα να είναι απλούστερα. Η πραγματικότητα όμως είναι διαφορετική: το 99,9% των προγραμμάτων που υπάρχουν στα windows είναι παντελώς άχρηστα στο Linux, διότι αυτό έρχεται μαζί με ένα υπερ-πλήρες σετ εργαλείων (GNU και μη): find, bash, awk, sed, grep, γλώσσες προγραμματισμού που υπάρχουν σε κάθε διανομή όπως οι perl, python και ruby. Προσωπικά αυτό είναι για μένα το μεγαλύτερο ατού ενός UNIXοειδούς συστήματος (ακόμα και του MacOS X), το ότι έχει πολλά μικρά εργαλεία που το καθένα κάνει τη δουλειά του πάρα πολύ καλά, ενώ παρέχει δυνατότητα διασύνδεσης των μικρών αυτών εργαλείων ώστε να εξυπηρετούνται πιο πολύπλοκες λειτουργίες. Π.χ. το υποθετικό "Ultra Search and Replace for Windows" θα είναι πάντα υποδεέστερο του συνδυασμού find - grep - sed στο Linux, απλά και μόνο γιατί η αρχή λειτουργίας του 2ου συνδυασμού του επιτρέπει να κάνει πρακτικά οτιδήποτε, χωρίς να χρειάζεται κάποιος να έχει μεριμνήσει να προβλέψει την κάθε ειδική περίπτωση στο GUI της εφαρμογής. Που θέλω να καταλήξω; Μάθετε τα εργαλεία που έχετε στη διάθεσή σας. Μάθετε βασικό bash scripting, τι κάνουν βασικές εντολές όπως οι awk, sed, grep, find, rename, μάθετε να χρησιμοποιείτε ένα καλό editor (π.χ. vim ή emacs) και ξεκινήστε να γράφετε απλά πράγματα σε μια scripting γλώσσα (προσωπικά προτιμώ ruby ή python, αλλά και η perl είναι μανούλα σε τέτοια πράγματα). Τότε μόνο θα δείτε πως δεν υπάρχει όριο στο τι μπορεί να κάνει κάποιος με ένα UNIXοειδές σύστημα ;-) [/μεγάλος-master-mode] Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nikosdimos Δημοσ. 3 Σεπτεμβρίου 2007 Μέλος Share Δημοσ. 3 Σεπτεμβρίου 2007 [μεγάλος-master-mode]@nikosdimos και υπόλοιποι και χωρίς καμία διάθεση να κάνω υποδείξεις αριστερά δεξιά ούτε να το παίξω παντογνώστης: Πολλές φορές, προερχόμενοι από μακροχρόνια χρήση Άλλων Λειτουργικών® τείνουμε να αντιμετωπίζουμε το Linux σαν να ήταν κάποιο από τα Άλλα Λειτουργικά®. Η αντιμετώπιση αυτή μας οδηγεί στο να παίρνουμε μη-βέλτιστες αποφάσεις, ψάχνοντας το προγραμματάκι εκείνο που κάνει ακριβώς τη δουλειά που θέλουμε, ενώ κάτι στο πίσω μέρος του μυαλού μας μας λέει ότι θα έπρεπε τα πράγματα να είναι απλούστερα. Η πραγματικότητα όμως είναι διαφορετική: το 99,9% των προγραμμάτων που υπάρχουν στα windows είναι παντελώς άχρηστα στο Linux, διότι αυτό έρχεται μαζί με ένα υπερ-πλήρες σετ εργαλείων (GNU και μη): find, bash, awk, sed, grep, γλώσσες προγραμματισμού που υπάρχουν σε κάθε διανομή όπως οι perl, python και ruby. Προσωπικά αυτό είναι για μένα το μεγαλύτερο ατού ενός UNIXοειδούς συστήματος (ακόμα και του MacOS X), το ότι έχει πολλά μικρά εργαλεία που το καθένα κάνει τη δουλειά του πάρα πολύ καλά, ενώ παρέχει δυνατότητα διασύνδεσης των μικρών αυτών εργαλείων ώστε να εξυπηρετούνται πιο πολύπλοκες λειτουργίες. Π.χ. το υποθετικό "Ultra Search and Replace for Windows" θα είναι πάντα υποδεέστερο του συνδυασμού find - grep - sed στο Linux, απλά και μόνο γιατί η αρχή λειτουργίας του 2ου συνδυασμού του επιτρέπει να κάνει πρακτικά οτιδήποτε, χωρίς να χρειάζεται κάποιος να έχει μεριμνήσει να προβλέψει την κάθε ειδική περίπτωση στο GUI της εφαρμογής. Που θέλω να καταλήξω; Μάθετε τα εργαλεία που έχετε στη διάθεσή σας. Μάθετε βασικό bash scripting, τι κάνουν βασικές εντολές όπως οι awk, sed, grep, find, rename, μάθετε να χρησιμοποιείτε ένα καλό editor (π.χ. vim ή emacs) και ξεκινήστε να γράφετε απλά πράγματα σε μια scripting γλώσσα (προσωπικά προτιμώ ruby ή python, αλλά και η perl είναι μανούλα σε τέτοια πράγματα). Τότε μόνο θα δείτε πως δεν υπάρχει όριο στο τι μπορεί να κάνει κάποιος με ένα UNIXοειδές σύστημα ;-) [/μεγάλος-master-mode] Συμφωνώ μαζί σου απόλυτα ότι το linux έχει απείρως μεγαλύτερες δυναντότητες στο να μεταχειρίζεσαι τα αρχεία. Άλλωστε γιαυτό ζήτησα και κάποιος να μου πει την συγκεκριμένη μια γραμμή να κάνω αυτό το πράγμα δεν ξεκίνησα να ψάχνω addons και τέτοια με την μια. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nikosdimos Δημοσ. 20 Σεπτεμβρίου 2007 Μέλος Share Δημοσ. 20 Σεπτεμβρίου 2007 Μετά από μια μικρή ενασχόληση έφτιαξα ένα προγραμματάκι σε ruby που κάνει αυτό κάνει και το shell script που ήθελα να φτιάξω. Ελπίζω να είναι χρήσιμο για κάποιους που θέλουν να έχουν ένα παράδειγμα για ruby. > source_file = File.open("source.html") new_file = File.new("output.html", "w") begin count = 0 while (line = source_file.readline) if line =~ /\<a href\=\"http\:\/\/anonym\.to\/\?http\:\/\/rapidshare\.com/ count += 1 first_split = line.split(/\?/) second_split = first_split[1].split(/\"/) new_file.print "<a href=" + second_split[0] + ">"+ count.to_s + "</a>\n" end end rescue EOFError source_file.close new_file.close puts "Done!" end Για να το χρησιμοποιήσει κάποιος πρέπει να έχει εγκατεστημένη την Ruby στον υπολογιστή του. Το προγραμματάκι τρέχει γράφωντας "ruby linkify.rb" Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.