Ich bekomme nicht das Verhalten, das ich von sed erwartet.Sed mehrere Suchbegriffe
Von dem, was ich sehen kann, sollte ich in der Lage sein zu verwenden:
sed -e 's/findfirsthing/replace/;s/findsecondthing/replace/'
Jedoch habe ich nicht erfolgreich war. Wie Sie aus der Ausgabe unten sehen können. Obwohl ich "ca." entfernen wollte und "ca-a". Von der Suche hat es nur teilweise funktioniert.
macbook:labs alex$ cat ca_vip.txt
ca.1
ca-a.2
3
4
macbook:labs alex$ cat vip.sh
#!/bin/bash
for line in `cat ca_vip.txt`
do
if [[ $line =~ [ca.*] || [ca-a.*] ]]
then
echo $line | sed -e 's/ca.//;s/ca-a.//' >> temporary.txt
elif [ $line != [ca.*] || [ca-a.*] ]
then
echo $line >> temporary.txt
fi
done
macbook:labs alex$ ./vip.sh
macbook:labs alex$ cat temporary.txt
1
a.2
3
4
Der Ausgang ich erwarten würde ist:
1
2
3
4
Warum verwenden Sie eine for-Schleife, um die Zeilen in bash zu lesen und sie an sed zu senden? Dein gesamtes Skript ist fast genau äquivalent zu 'sed -e 's/ca .//; s/ca-a ./' 'temporary.txt', der einzige Unterschied ist, dass' echo 'Leerzeichen ändert. –