私はsedから期待した動作を得られません。Sed複数の検索語
私が見ることができるものから、私は使用することができるはずです。
sed -e 's/findfirsthing/replace/;s/findsecondthing/replace/'
私は失敗したが。あなたは下の出力から見ることができます。私は "ca"を削除したいと思っていましたが、 「ca-a」検索から、部分的にしか働かなかった。私は期待
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
出力は次のようになります。
1
2
3
4
なぜforループを使ってbashの行を読み込み、それらをsedにエコーするのですか?あなたのスクリプト全体は 'sed -e 's/ca .//; s/ca-a .//'> temporary.txt'とほとんど全く同じですが、唯一の違いは 'echo'が空白を修正する点です。 –