it-swarm.com.de

Bash Script mit Grep, um nach einem Muster in einer Datei zu suchen

Ich schreibe ein Bash-Skript, um mit GREP nach einem Muster in einer Datei zu suchen. Ich habe keine Ahnung, warum es nicht funktioniert. Das ist das Programm

echo "Enter file name...";
read fname;
echo "Enter the search pattern";
read pattern
if [ -f $fname ]; then
    result=`grep -i '$pattern' $fname`
    echo $result;
fi

Oder gibt es dafür einen anderen Ansatz?

Vielen Dank


(Inhalt der Datei)

Welcome to UNIX
The Shell is a command programming language that provides an interface to the UNIX operating system.
The Shell can modify the environment in which commands run.
Simple UNIX commands consist of one or more words separated by blanks. 
Most commands produce output on the standard output that is initially connected to the terminal. This output may be sent to a file by writing.
The standard output of one UNIX command may be connected to the standard input of another UNIX Command by writing the `pipe' operator, indicated by |

(Muster)

`UNIX` or `unix`

Die einfachen Anführungszeichen um $pattern in der grep-Anweisung bewirken, dass die Shell die Shell-Variable nicht auflöst. Sie sollten daher doppelte Anführungszeichen verwenden.

17
Moritz Both

Es ist nur ein Semikolon erforderlich (das vor then), aber ich lasse es normalerweise aus und setze then in eine eigene Zeile. Sie sollten die Variable, die Sie als Echo verwenden, und die Variable, die Ihr grep-Muster enthält, in doppelte Anführungszeichen setzen. Variablen, die Dateinamen enthalten, sollten ebenfalls in Anführungszeichen gesetzt werden. Sie können read Ihre Eingabeaufforderung anzeigen lassen. Sie sollten $() anstelle von Backticks verwenden.

read -p "Enter file name..." fname
read -p "Enter the search pattern" pattern
if [ -f "$fname" ]
then
    result=$(grep -i "$pattern" "$fname")
    echo "$result"
fi
4

read -p "Dateiname eingeben ..." fname read -p "Suchmuster eingeben" pattern if [-f "$ fname"] then result = $ (grep -i -v -e $ pattern -e "$ fname ") echo" $ result "fi

0
user8952030