2017-02-22 7 views
1

私はbashで新しく、作成しているファイルの行を削除しようとしています。そう前置きなしにこのsedの何が問題なのですか? (行を削除しようとしています)

if [[ $(ls -1 | grep 'fichiers.toCheck' | wc -l) -eq 0 ]]; then 
touch fichiers.toCheck 
fi 

find . -name '*.mp4' > fichiers.toCheck 

while read p; do 
    echo $p 
    sed -i "$p/d" ./fichiers.toCheck 
done <fichiers.toCheck 

コンソールが私に与えているが、この:私はSED疑ってる

sed: 1: "./fichiers.toCheck": invalid command code . 

解釈「/」引数として行に(行が何かあります」./nosound.mp4" のように。

あなたの推測は何ですか?

編集2 =正しい構文のWA

while read p; do 
    echo $p 
    sed -i "/$p/d" fichiers.toCheck 
done <fichiers.toCheck 

そして私が手::

sed: 1: "fichiers.toCheck": invalid command code f 
sed -i "@[email protected]" fichiers.toCheck 
-i.bak

sed -i.bak "[email protected][email protected]@" fichiers.toCheck 

編集=ので、ここに私の実験だとS

と同じエラー:

sed: 1: "fichiers.toCheck": invalid command code f 
+0

構文はn'd'あり、 '15d'や'/'regexp'/d'のように、'/Blondie/d'のように。 – AlexP

+0

私は自分の投稿を編集してあなたに答えました! – petaire

+0

ところで、ファイルが 'if [[! -e file]];次にtouch file; fi'または1行で[[[ -e file]] && touch file' –

答えて

1

あなたsed構文はbash変数からパターンを含む行を削除するには、間違っています。 FreBSDネイティブsedOS Xに使用すると、インプレース編集には-i.bakを使用します。

sed -i.bak "/$p/d" fichiers.toCheck 

あなたの変数が@sed区切りを変更し、空に交換部品を設定して、伝統的なパターンs/<pattern>/<replacement>/スタイルを使用/含まれている疑いがある場合、すなわち

sed -i.bak "[email protected][email protected]@" fichiers.toCheck 
+0

私は自分の投稿を編集しました。 – petaire

+0

@Kenneth:それは間違った構文だったので、 'sed -i.bak" s @ $ p @@ "を試してみてください。 fichiers.toCheck ' – Inian

+0

まだ無効なコマンドコードを持っています。f:/ BTW私はmacOSにいますが、何かが変わった場合はdunno ... – petaire

関連する問題