traller
Goto Top

Wert in Datei Suchen und if else Bedingung

Hallo,
ich möchte ein kleines Bash-Script erstellen, welches prüft, ob ein bestimmter Text, welcher die Variable $suchtext ist, in einer Datei vorkommt und dann mit einem entsprechendem Befehl weiter macht oder was anderes. Leider funktionierte folgendes nicht:

if [ "$(cat /pfad/zur/datei)" = $suchtext ];  
then
   echo "Suchtext vorhanden!"  
else {
   echo -e "Trage "$suchtext" in der Datei nach." >> /pfad/zur/datei  
   }
fi

was ist da falsch?

Content-Key: 239021

Url: https://administrator.de/contentid/239021

Printed on: April 26, 2024 at 01:04 o'clock

Member: Gersen
Gersen May 23, 2014 updated at 13:22:29 (UTC)
Goto Top
Besser wäre wohl

if [ `grep -c $suchtext /pfad/zur/datei` -gt 0 ];

Gruß,
Gersen
Member: traller
traller May 23, 2014 at 14:32:49 (UTC)
Goto Top
danke, hat geklappt. Nun weiß ich nicht, ob folgendes richtig ist: Ich habe eine Datei die wie folgt aussieht:
Text1 Text2
Text3 Text4
Nun möchte ich: suche nach Text4 und lege mir den Text3 (ohne das Leerzeichen) als Variable1 fest.

ich glaube, dass hier im sed was falsch dafür ist ... da ich den sed befehl nutze, um nach Text3 zu suchen und er soll mir Text4 ausgeben, ich bräuchte das aber genau umgekehrt.
varible1=$(cat /pfad/zur/datei | sed -rn "s/.*Text4 (.*)/\1/p")  
echo $variable1

Danke!
Member: Gersen
Gersen May 23, 2014 updated at 17:43:23 (UTC)
Goto Top
Vielleicht

variable1=`grep Text4 /pfad/zur/datei|cut -f1 -d ' '`

Oder man bemüht den awk:

variable1=`awk '/Text4/ {print $1}' /pfad/zur/datei`

Gruß,
Gersen
Member: Endoro
Endoro May 23, 2014 at 18:44:03 (UTC)
Goto Top
Hey, sed tuts auch:
sed '/Text4/s/\s.*//'  
Gruss, Endoro