2016-03-28 15 views
0

I持つディレクトリツリー内の$dirs保存するディレクトリと呼ばれる変数:このsedコマンドより普遍的な代替手段は?

root/animals/rats/mice 
root/animals/cats 

そして私は、私はdirsの変数から削除したいディレクトリの名前を保持している例えば$removeと呼ばれる別の変数があります。

rats 
crabs 

私はそれを行うためのforループを使用しています:そのトイレの後

for d in $remove; do 
dirs=$(echo "$dirs" | sed "/\b$d\b/d") 
done 

をpが完了したら、私は何を残すべきです:

root/animals/cats 

ループがラットを発見したためです。

私は3つのシステムで、このアプローチをテストしているが、2

で期待どおりそれだけですべてのシェルに働くだろうより普遍的なアプローチがあります動作しますか?

+0

2つのリストがあり、2番目のリストのエントリを含む最初のリストからすべてのエントリを削除したいと考えていますか? –

+0

これらのリストは必然的に変数に格納されているのですか? –

+1

このためのシェルスクリプトが必要ですか? 3番目のシステムではどのように動作しませんか? – zdim

答えて

1

あなたが持つ形式で除外リストを保存することができないときは、

echo "${dirs}" | grep -Ev "rats|crabs" 

ような何かを探しています|、その場でそれを変更しよう:」

echo "${dirs}" | grep -Ev $(echo "${remove}" | tr -s "\n" "|" | sed 's/|$//') 

することができます除外ファイルなしで除外ファイルを使用する

echo "${dirs}" | grep -vf <(echo "${remove}") 

解決策のどれが最高のサポートを受ける。

+0

ありがとう、これらのどれかがうまくいった:) – Daeto

関連する問題