Sed'den beklediğim davranışı alamıyorum.Sed çoklu arama terimleri
Görebildiğim kadarıyla, ben kullanmak mümkün olmalıdır:
sed -e 's/findfirsthing/replace/;s/findsecondthing/replace/'
Ancak başarısız oldu. Aşağıdaki çıktıdan da görebileceğiniz gibi. Her ne kadar "ca." ve "ca-a." Aramadan, sadece kısmen çalıştı. Ben beklenebilir
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
çıktısı:
1
2
3
4
Neden bash satırlarını okumak için bir for döngüsü kullanıyorsunuz ve onları sed olarak yankılıyorsunuz? Tüm senaryonuz neredeyse tam olarak 'sed -e'/ca .//; s/ca-a .// '> temporary.txt' ile eşdeğerdir, tek fark' echo 'nun boşlukları değiştirmesidir. –