Contenidos
Como buscar en el ine
qué es la búsqueda inversa en linux
Pulsa Ctrl+R y escribe ssh. Ctrl+R iniciará la búsqueda desde el comando más reciente hasta el más antiguo (búsqueda inversa). Si tienes más de un comando que comienza con ssh, presiona Ctrl+R una y otra vez hasta que encuentres la coincidencia.
El historial es bueno pero limitado – prefiero configurar mi entorno bash para que registre todos los comandos que he ejecutado, además del directorio en el que fueron ejecutados. Luego ejecuto un comando para listar todos los comandos que he ejecutado en el directorio actual, que puedo canalizar a grep, etc – se llama ‘dish’ ver:
También hay un comando realmente útil que se obtiene de forma gratuita llamado ‘dishg’ – o dish global – que imprime todos los comandos ejecutados, independientemente del directorio. Obviamente, éste sólo es útil cuando se utiliza con grep y tail, etc…
Lo he estado usando durante años y es literalmente la primera cosa que instalo cada vez que configuro una nueva caja. Registra los comandos que se ejecutan en archivos de texto en un directorio oculto (~/.dish) … Nunca he tenido un problema con el espacio en disco …
Me gusta grep mi historia en lugar de Ctrl + R búsqueda hacia atrás. Eso es porque sólo puedes ver una línea con Ctrl+R. Con grep obtienes una visión más general de tu última interacción con un comando, etc.
cómo buscar en internet de forma eficaz
Vim proporciona el comando :s (sustituir) para buscar y reemplazar; este consejo muestra ejemplos de cómo sustituir. En algunos sistemas, gvim tiene Buscar y Reemplazar en el menú Editar (:help :promptrepl), sin embargo es más fácil usar el comando :s debido a su historial de línea de comandos y a la capacidad de insertar texto (por ejemplo, la palabra bajo el cursor) en los campos de búsqueda o reemplazo.
La bandera g significa global – cada ocurrencia en la línea se cambia, en lugar de sólo la primera. Este consejo asume la configuración por defecto de la opción ‘gdefault’ y ‘edcompatible’ (off), que requiere que la bandera g se incluya en %s///g para realizar una sustitución global. Usar :set gdefault crea confusión porque entonces %s/// es global, mientras que %s///g no lo es (es decir, g invierte su significado).
(donde foobar es la parte de sustitución del comando :s/…/…/. Puede escribir y para sustituir esta coincidencia, n para saltarse esta coincidencia, a para sustituir esta y todas las coincidencias restantes (“todas” las coincidencias restantes), q para salir del comando, l para sustituir esta coincidencia y salir (piense en “último”), ^E para desplazar la pantalla hacia arriba manteniendo la tecla Ctrl y pulsando E y ^Y para desplazar la pantalla hacia abajo manteniendo la tecla Ctrl y pulsando Y. Sin embargo, las dos últimas opciones sólo están disponibles, si su Vim es un normal, grande o enorme construido o la característica insert_expand fue habilitada en tiempo de compilación (busque +insert_expand en la salida de :version).
He documentado y probado 10 formas diferentes de leer un archivo en Java y luego las he comparado haciéndolas leer en archivos de prueba de 1KB a 1GB. Aquí están los 3 métodos de lectura de archivos más rápidos para leer un archivo de prueba de 1GB.
Esto fue probado con éxito en Java 8 y 9, pero no funcionará en Java 7 debido a la falta de soporte para las expresiones lambda. Tardó unos 3,5 segundos en leer un archivo de 1GB, lo que lo sitúa en segundo lugar en cuanto a la lectura de archivos de mayor tamaño.
Algunas notas: El flujo devuelto por Files.lines (a diferencia de la mayoría de los flujos) necesita ser cerrado. Por las razones mencionadas aquí evito usar forEach(). El código extraño (Iterable<String>) lines::iterator convierte un Stream en un Iterable.
La función .hasNextLine() es un booleano que devuelve true si todavía hay más líneas en el texto. La función .nextLine() te da una línea completa como una cadena que puedes usar de la manera que quieras. Prueba con System.out.println(line) para imprimir el texto.
En Java 8, también hay una alternativa al uso de Files.lines(). Si tu fuente de entrada no es un archivo sino algo más abstracto como un Reader o un InputStream, puedes transmitir las líneas a través del método BufferedReaders lines().
buscar y reemplazar párrafo en word
grep “palabra1” FILE imprimirá todas las líneas que contengan la palabra1 de FILE, y luego grep “palabra2” imprimirá las líneas que contengan la palabra2. Por lo tanto, si se combinan con una tubería, se mostrarán las líneas que contienen tanto la palabra1 como la palabra2.
Además, para responder a tu pregunta de por qué se atasca: en grep -c “palabra1”, no has especificado un archivo. Por lo tanto, grep espera la entrada de stdin, y es por eso que parece colgarse. Puedes pulsar Ctrl+D para enviar un EOF (fin de archivo) para que se cierre.
Las variantes de “un comando” tienen la ventaja de que sólo hay un proceso en ejecución, por lo que las líneas que contienen “palabra1” no tienen que pasar por una tubería al segundo proceso. La importancia de esto depende del tamaño del archivo de datos y de cuántas líneas coincidan con “palabra1”. Si el archivo es pequeño, el rendimiento no será un problema y la ejecución de dos comandos estará bien. Si el archivo es grande pero sólo unas pocas líneas contienen “palabra1”, no habrá muchos datos que se pasen por la tubería y el uso de dos comandos está bien. Sin embargo, si el archivo es enorme y ‘palabra1’ aparece con frecuencia, entonces puede estar pasando datos significativos por la tubería donde un solo comando evita esa sobrecarga. En cambio, la regex es más compleja; puede que tengas que hacer un benchmark para saber qué es lo mejor, pero sólo si el rendimiento es realmente importante. Si ejecuta dos comandos, debería tratar de seleccionar la palabra menos frecuente en el primer grep para minimizar la cantidad de datos procesados por el segundo.
Entradas relacionadas
Bienvenid@, soy Patricia Gómez y te invito a leer mi blog de interés.