Grep: encuentra todos los casos posibles de una palabra en un archivo de texto

Grep: encuentra todos los casos posibles de una palabra en un archivo de texto

Tengo un directorio con muchos archivos de texto.

De estos archivos, me interesa una palabra "abcdefghi". Necesito enumerar todos los casos posibles de esta palabra, como

  • abcdefghi
  • abcdefghI
  • abcDefghi
  • ABCDEFGHI

y todas las demás combinaciones posibles.

¿Es posible con grepo egrep?

Lo sé, puedo escribir un script de shell con combinaciones de grep y grep inverso, único y lograr los resultados, pero estoy buscando una solución portátil.

Respuesta1

Con GNU grep, prueba esto:

grep -io -- 'abcdefghi' *.txt

Supuse que todos los archivos con los que desea buscar un texto en particular terminarían .txt(y no desea los ocultos).

Desde man grepun sistema donde grepse encuentra la implementación de GNU (como es típico en los sistemas basados ​​en Linux).

-o, --only-matching       show only the part of a line matching PATTERN
-i, --ignore-case         ignore case distinctions

Respuesta2

Como principiante en secuencias de comandos Bash, estaba buscando exactamente esto y, según la respuesta aceptada anteriormente, escribí la siguiente secuencia de comandos Nautilus, que nombré "Buscar texto en el directorio...". Como esto será útil para mí de vez en cuando, pensé que también podría ser útil para otros.

#!/bin/bash
# Nautilus Script to search text in selected folder
# Determine the path
if [ -e -n $1 ]; then
    obj="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
else
    base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
    obj="$base/${1##*/}"
fi
# Determine the type and go
if [ -f "$obj" ]; then
    /usr/bin/canberra-gtk-play --id="dialog-error" &
    zenity --error --title="Search Directory" --text "Sorry, selected item is not a folder."
elif [ -d "$obj" ]; then
    cd "$obj"
# Get text to search
    SearchText=$(zenity --entry --title="Search Directory" --text="For Text:" --width=250)
    if [ -z "$SearchText" ]; then
        notify-send "Search Directory" "Nothing entered; exiting..." -i gtk-dialog-info -t 500 -u normal &
        exit
    else
        if [ -f "/tmp/Search-Directory-Results.txt" ]; then
            rm "/tmp/Search-Directory-Results.txt"
        fi
        grep_menu()
        {
        im="zenity --list --radiolist --title=\"Search Directory\" --text=\"Please select one of the search options below:\""
        im=$im" --column=\"☉\" --column \"Option\" --column \"Description\" "
        im=$im"TRUE \"case-sensitive\" \"Match only: Text\" "
        im=$im"FALSE \"case-insensitive\" \"Match: TEXT, text, Text...\" "
        }
        grep_option()
        {
        choice=`echo $im | sh -`
        if echo $choice | grep -iE "case-sensitive|case-insensitive" > /dev/null
        then
            if echo $choice | grep "case-sensitive" > /dev/null
            then
                grep -- "$SearchText" *.* > "/tmp/Search-Directory-Results.txt"
            fi
            if echo $choice | grep "case-insensitive" > /dev/null
            then
                grep -i -- "$SearchText" *.* > "/tmp/Search-Directory-Results.txt"
            fi
        fi
        }
        grep_menu
        grep_option
    fi
    zenity  --class=LIST --text-info \
            --editable \
            --title="Search Directory" \
            --filename="/tmp/Search-Directory-Results.txt"
fi
exit 0

información relacionada