मैं एक बैश फ़ाइल में कई पंक्तियों पर एक sed कमांड फैलाने की कोशिश कर रहा हूं। मेरे पास कई पैटर्न हैं जो sed जांचता है और मैं कुछ पैटर्न को लाइन परिवर्तन से अलग करने की उम्मीद कर रहा हूं। यहां मेरी वर्तमान स्क्रिप्ट है जो काम नहीं करती है, सब कुछ एक पंक्ति पर काम करती है लेकिन मैं इसे थोड़ा सा साफ करने और चीजों को विभाजित करने की उम्मीद कर रहा था।एकाधिक पंक्तियों पर 'sed' कमांड
#!/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
किसी भी मदद के लिए धन्यवाद!
क्या "काम नहीं करता है" क्या मतलब है? क्या आपको एक त्रुटि संदेश मिलता है? यह क्या है? क्या आउटपुट आप अपेक्षा करते हैं उससे अलग है? किस तरह से? रिक्त स्थान से बचने और आपके पास जिस तरह से हाइफ़न करना आवश्यक नहीं होना चाहिए। –