Grep : 텍스트 파일에서 단어의 가능한 모든 경우를 찾습니다.

Grep : 텍스트 파일에서 단어의 가능한 모든 경우를 찾습니다.

텍스트 파일이 많은 디렉토리가 있습니다.

이 파일 중에서 "abcdefghi"라는 단어에 관심이 있습니다. 다음과 같이 이 단어의 가능한 경우를 모두 나열해야 합니다.

  • abcdefghi
  • abcdefghI
  • abcDefghi
  • ABCDEFGHI

그리고 다른 모든 가능한 조합.

grep또는 으로 가능합니까 egrep?

나는 grep과 inverse grep의 콤보를 사용하여 고유한 쉘 스크립트를 작성하고 출력을 얻을 수 있다는 것을 알고 있지만 휴대용 솔루션을 찾고 있습니다.

답변1

GNU를 사용하면 grep다음을 시도해 보세요:

grep -io -- 'abcdefghi' *.txt

나는 특정 텍스트를 검색하려는 모든 파일이 끝날 것이라고 가정했습니다 .txt(숨겨진 파일은 원하지 않습니다).

man grepGNU가 구현 된 시스템에서 ( grepLinux 기반 시스템에서 일반적으로 발생함)

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

답변2

Bash 스크립팅의 초보자로서 저는 이것을 정확히 찾고 있었고 위에서 허용된 답변을 기반으로 다음과 같은 Nautilus 스크립트를 작성했습니다.디렉토리에서 텍스트 검색...". 이 내용이 나에게도 가끔 도움이 될 것 같으니, 다른 사람에게도 도움이 될 수 있겠다는 생각이 들었습니다.

#!/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

관련 정보