Próbuję rozprzestrzeniać jedną komendę sed na kilka linii w pliku bash. Mam wiele wzorców, na które sprawdza sed i mam nadzieję oddzielić niektóre wzorce od zmiany linii. Oto mój obecny skrypt, który nie działa, wszystko działa na jednej linii, ale miałem nadzieję, że trochę go posprzątam i podzielę.Rozprzestrzenianie polecenia "sed" na wielu liniach
#!/bin/sh -f
#files=$(ls -1 | egrep '.avi|.mkv');
#echo $files
for f in *.mkv *.avi;
do
renF=`echo $f | tr '.' ' ' | sed -e 's/ \([^ ]*\)$/.\1/; s/\ \[sharethefiles\ com\]//i' \
-e 's/\ x264\-Ctu//i; s/\ x264\-Bia//i; s/\ x264\-Fov//i' \
-e 's/\ Xvid\-Lol//i; s/\ Xvid\-Xor//i; s/\ Xvid\-Notv//i; s/\ Xvid\-Fqm//i; s/\ Xvid\-p0w4//i; Xvid\-BIA//i; s/\ Xvid\-Chgrp//i; s/\ Xvid\-Fov//i' \
-e 's/\ PDTV\-Fov//i; s/\ PDTV\-River//i; s/\ PDTV\-Sfm' \
-e 's/\ Dts\-Chd//i; s/\ WEB\-DL//i; s/\ H264\-SURFER//i' \
-e 's/\ Dsr//; s/\ WS//i; s/\ PDTV//i; s/\ X264//i; s/\ Blu\-Ray//; s/\ Bdrip//i; s/\ Bluray//i; s/\ HDTV//i; s/\ DTS//i; s/\ AC3//i; s/\ Dd5//i; s/\ Dualaudio//i; s/\ AAC2//i; s/\ XVID//i'`
#echo $renF
if [ "$f" == "$renF" ]; then
echo "FileName already cleaned."
else
mv "$f" "$renF"
fi
done
Dzięki za pomoc!
Co to znaczy "nie działa" oznacza? Czy otrzymujesz komunikat o błędzie? Co to jest? Czy wyniki różnią się od oczekiwanych? W jaki sposób? Nie powinno być konieczne ucieczkę z przestrzeni i łączenie się z tym, co masz. –