जवाबों:
अंग्रेजी में, इस sedकार्यक्रम का अर्थ है: प्रत्येक पंक्ति के लिए,
123!] यदि वर्तमान लाइन संख्या १२३ नहीं है, तो [ d] वर्तमान लाइन को हटा दें और अगले चक्र को शुरू करें (यानी अगली पंक्ति में जाएं);dकमांड निष्पादित नहीं किया गया था), [ q] बिना किसी और लाइनों को संसाधित किए बाहर निकलें (लेकिन हमारे मरने के थ्रू में वर्तमान लाइन का प्रिंट आउट लें)।या यदि आप पसंद करते हैं, शेल सिंटैक्स में:
line_number=0
while IFS= read -r pattern_space; do
line_number=$(($line_number+1))
if [ $line_number -ne 123 ]; then # 123!
continue # d
fi
echo "$pattern_space"; break # q
echo "$pattern_space" # implicit final print (never reached)
done
{d;q;}होना, qहर लाइन पर लागू नहीं होना चाहिए (इसलिए केवल पहले)?
qहर उस पंक्ति पर लागू होता है जहाँ इसे क्रियान्वित किया जाता है। लेकिन जब रेखा संख्या 123 नहीं होती है, तो dकमांड निष्पादित होती है, और इसका अर्थ तुरंत अगली इनपुट लाइन पर छोड़ना है।
sed -n 123p(उसी आउटपुट को प्रिंट करता है) सिवाय इसके कि यह 123 के बाद बंद हो जाता है बजाय संभावित हजारों लाइनों को संसाधित करने के कि यह कभी भी किसी भी चीज के साथ कुछ भी नहीं करेगा।
!गया था कि इससे जुड़ा थाd, नहीं123।