Ich bin neu in bash, und ich versuche, eine Zeile in einer Datei zu löschen, die ich erstelle.Was ist los mit diesem Sed? (Versuche, eine Zeile zu löschen)
So ohne weiteres:
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
Console gibt mir dies:
sed: 1: "./fichiers.toCheck": invalid command code .
ich sed bin Verdacht interpretiert die "/" in der Zeile als Argument (die Linie ist etwas, wie“./nosound.mp4" .
Was ist Ihre Vermutung?
bearbeiten 2 = die korrekte Syntax wa s mit -i.bak
sed -i.bak "[email protected][email protected]@" fichiers.toCheck
edit = also hier ist meine Experimente:
while read p; do
echo $p
sed -i "/$p/d" fichiers.toCheck
done <fichiers.toCheck
Und ich bekomme:
sed: 1: "fichiers.toCheck": invalid command code f
sed -i "@[email protected]" fichiers.toCheck
und gleichen Fehler:
sed: 1: "fichiers.toCheck": invalid command code f
Die Syntax n'd' ist, zum Beispiel '15d' oder'/'regexp'/d', zum Beispiel'/Blondie/d'. – AlexP
Ich habe meinen Beitrag bearbeitet, um Ihnen zu antworten! – petaire
Übrigens können Sie prüfen, ob eine Datei nur mit 'if [[! -e Datei]], dann drücke Datei; fi' oder in einer Zeile '[[! -e Datei]] && touch file' –