unix tr buscar y reemplazar
sed awk (4)
¿Esto funciona para tí?
awk -F"><" -v OFS=">/n<" ''{print $1,$2}''
[jaypal:~/Temp] echo "<hello><world>" | awk -F"><" -v OFS=">/n<" ''{$1=$1}1'';
<hello>
<world>
Puedes poner una expresión regular / / (líneas para las que quieres que esto suceda) frente a la acción awk
{}
.
Este es el comando que estoy usando en una página web estándar de la que me gustaría comprar en línea.
tr ''<'' ''/n<'' < index.html
sin embargo, me dio nuevas líneas, pero no agregó la zanahoria trasera nuevamente. p.ej
echo "<hello><world>" | tr ''<'' ''/n<''
devoluciones
(blank line which is fine)
hello>
world>
en lugar de
(blank line or not)
<hello>
<world>
Gracias
El orden de donde coloque su nueva línea es importante. También puedes escapar de "<".
tr ''//<'' ''//</n'' < index.html
`tr ''<'' ''</n'' < index.html` works as well.
Eso es porque tr
solo hace la sustitución (o eliminación) de carácter por carácter.
Pruebe sed
lugar.
echo ''<hello><world>'' | sed -e ''s/<//n&/g''
O awk
.
echo ''<hello><world>'' | awk ''{gsub(/</,"/n<",$0)}1''
O perl
.
echo ''<hello><world>'' | perl -pe ''s/<//n</g''
O ruby
.
echo ''<hello><world>'' | ruby -pe ''$_.gsub!(/</,"/n<")''
O python
.
echo ''<hello><world>'' /
| python -c ''for l in __import__("fileinput").input():print l.replace("<","/n<")''
Si tiene GNU grep
, esto puede funcionar para usted:
grep -Po ''<.*?>[^<]*'' index.html
que debería pasar a través de todo el HTML, pero cada etiqueta debería comenzar al principio de la línea con un posible texto sin etiqueta siguiendo en la misma línea.
Si no quieres nada más que etiquetas:
grep -Po ''<.*?>'' index.html
Sin embargo, debe saber que no es una buena idea analizar HTML con expresiones regulares.