|
|
Tutorial de Expresiones Regulares
(161427 lectures)
Por Daniel Rodriguez
DaniRC
(http://www.ibiza-beach.com/)
Creado el 30/07/2001 12:25 modificado el 15/02/2002 12:45
|
Pagina12/14 |
Mas cosas y ejemplos sobre GREP y el SED
SED
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
-n, --quiet, --silent
suppress automatic printing of pattern space
-e script, --expression=script
add the script to the commands to be executed
-f script-file, --file=script-file
add the contents of script-file to the commands to be executed
--help display this help and exit
-V, --version output version information and exit
If no -e, --expression, -f, or --file option is given, then the first
non-option argument is taken as the sed script to interpret. All
remaining arguments are names of input files; if no input files are
specified, then the standard input is read.
E-mail bug reports to: bug-gnu-utils@gnu.org .
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
s/^ *//g
s/ *$//g
s/ */ /g
GETURL $GETURLFLAGS "$url" |
#$EGREP -i '/news/[0-9][0-9]*-[0-9][0-9]*-[0-9][0-9]*.*\.html' |
$EGREP -i 'tag=(tp_pr|mn_hd)' |
$EGREP -v '< a href[^>].*>[ ]*< im g' | # ignore image links
tr -d '\015' | # Remove carriage-return
sed '/tp_pr/a\
special feature' | # main titles only have one line
striphtml |
$EGREP -v '[ap]\.m\.[ ]PT' | # ignore time line
$EGREP -v '^[ ]*$' |
paste -d '|' - - | # concatenate two consecutive lines
sed 's:|: -- :' |
nl -s'. ' | # number lines, number separator is '. '
umbruch -o 8
GREP
grep tcp | grep LISTEN
cat archivo | grep -v palabra (Lo enseña todo menos palabra)
grep loquesea.*LOQUEQUIERAS
grep tcp | grep LISTEN
$ cat archivo | grep palabra
Para ver los logs "en directo" tenemos el comando tail, de forma que tail -f /var/log/messages, por ejemplo nos muestra los mensajes del sistema segun van sucediendo.
Y el otro truco es una opcion interesante del grep, el parametro -v que nos muestra los datos que NO cumplen la cadena de busqueda
Por ejemplo para ver los accesos a la web que no vienen de nuestra maquina
cat /var/log/httpd/access_log | grep -v "192.168.0.1"
Otro comando útil en este tipo de programación shell
es el tr.
tr -s " ", por ejemplo, te sustituye las seqüencias de uno o más espacios por uno solo, esto es útil al combinarlo con cut -d " ", ya que a lo mejor entre dos campos de un log hay un número variable de espacios.
root
moul
xinit
enlightenment
Bi-Clic File y File Manager
kill -9 numero proceso
ps -a
xinit
enlightenment
xdm
http://searchenginewatch.com/resources/tutorials.html
http://www.google.com/
# writes all keystrokes to [logfile] and sends them to
# the shell to be executed
# Allows you to create a shell script for a series
# of commands as you do them
#
# usage: logstrokes [file to log to]
# when done, ctr-c to stop logging
# comments / improvements: support@webmastersguide.com
# history:
# 1.2 Fixed script so logfile could be entered as
# either a full path or a relative path, without a switch
#
# 1.1 Initial release - required r switch
case $1 in
"")echo "usage: logstrokes [file to log to]"; exit 1;;
-*) shift;;
esac
case $1 in
/.*) logfile="$1";;
*) logfile="`pwd`/$1";;
esac
echo "logging to $logfile"
touch $logfile
chmod 755 $logfile
while :
do
echo -n "[`pwd`]# "
read args
echo "$args" >>$logfile
$args
done
Captura de web sites.
Antes que nada quiero aclarar que un proceso automático para hacer un mirror de un website es algo que por ahora me supera, y como no tengo una necesidad repetida de hacerlo, no profundizé en un spider mas o menos astuto y lo hice por pedacitos. Todo lo que sigue puede servir como una guia de procedimientos, es sólo
orientativa. Si vos si tenés la necesidad del spider, me avisás y lo hacemos. Tené en cuenta que a diferencia de un directorio de
ftp, que se parece más a un árbol de derivación (existe una estructura jerárquica, cada nodo se deriva de uno solo) como un directorio unix con ocasionales links, la estructura web es un grafo no dirigido y la lógica para recorrerlo integramente de forma eficiente es más compleja.
El otro dia un amigo me pidió que le sacara una copia a un site de Bach. Entre 1200 a 1800
htmls, no hay acceso por ftp, solo web. Un mail, please send me a zip, no, es antideportivo. Hay que hacer algo asi como un mirror por única vez, una instantanea del site
La estructura se puede ver en The J. S. Bach Home Page
Son varios index (por fecha, instrumento, nombre, combinados) que apuntan a un montón de archivos
"bach[:digit:].html" y estos a otros que no recuerdo bien, pero algo asi como
"p[:digit:].html
Webeando por ahi, encontré un simpatico script en Perl, wwwgrab, (los créditos están adentro) que me permitió con otro par de shell scripts hacerlo de un modo no del todo manual.
Primero te traés index.html y le extraés los links que sean de los index del
site, a algunos de estos les corrés
# filtro para wwwgrab
grep "<A HREF" *.html | \ # extrae todos los links
cut -f 2 -d '"' | \ # extrae el segundo campo segun delimitador (")
grep [0123456789] >> \ # extrae solo los archivos con numeros
archivos_a_bajar
Luego editá archivos_a_bajar y le sacás las irregularidades y
#!/bin/bash
URL=http://www.tile.net/tile/bach/
for file in $(cat archivos_a_bajar); do
wwwgrab $URL$file $file & # lo mando al background...
echo $URL$file # para monitorear
sleep s 1 # ... para que no se amontonen
done
Y repetís segun haga falta.
Más información en man grep, man cut, less wwwgrab
|
Paginas: <<Abreviatura Anterior 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Abreviatura Siguiente>> |
|
|
|
|
|
|---|
|
|
|
|
Calificacion
    Vots: 169 |
Danos tu opinion:
|
|
|
|
|
|
|
|