स्ट्रिंग के मिलान के साथ स्ट्रिंग पैटर्न की सभी घटनाओं को कैसे प्रतिस्थापित किया जाए यह उस क्रम पर निर्भर करता है जो तार पाए गए थे
मुझे एक बैश स्क्रिप्ट की आवश्यकता है जो किसी भी स्ट्रिंग को अंदर <>खोजती है, अगर यह एक ऐसा है जो इसे पहले नहीं मिला है तो इसे इंडेक्स काउंटर के वर्तमान मूल्य (शुरुआत में 0) से बदलना चाहिए और काउंटर को बढ़ाना चाहिए। यदि यह अंदर एक स्ट्रिंग पाता है <>जो पहले से ही जानता है, तो इसे स्ट्रिंग के सूचकांक को देखना चाहिए और इसे सूचकांक के साथ बदलना चाहिए। यह कई फ़ाइलों में किया जाना चाहिए, जिसका अर्थ है कि काउंटर को रीसेट नहीं किया जाता है जब कई फ़ाइलों को केवल स्टार्टअप पर पैटर्न के लिए खोजा जाता है
file_a.txt:
<abc>
<b>
<c>
<c>
<abc>
file_b.txt:
<c>
<b>
बन जाना चाहिए
file_a.txt:
0
1
2
2
0
file_b.txt:
2
1
मुझे अब तक क्या मिला:
names=()
for file in folder/*.txt
do
    name=$(sed 's/\<[a-zA-Z]*\> /\1 /' file) for i in "${names[@]}"
    do
        if [ "$i" -eq "$name" ]
        then
            #replace string with index of string in array
        else
            names+=("$name")
        fi
    done
done
संपादित करें: समस्या को सरल बनाने के लिए मैंने जो उल्लेख नहीं किया है, वह यह है कि जिस पैटर्न को प्रतिस्थापित किया जाना चाहिए वह फाइलों के अंदर का एकमात्र पाठ नहीं है, जिसका अर्थ है कि फाइलें इस तरह दिखती हैं: 
file_a.txt:
123abc<abc>xyz
efg
<b>ah
a<c>
<c>b
c<abc>
file_b.txt:
xyz<c>xyz
xyz<b>xyz
बन जाना चाहिए
file_a.txt:
123abc0xyz
efg
1ah
a2
2b
c0
file_b.txt:
xyz2xyz
xyz1xyz
क्योंकि फाइलें काफी बड़ी हो सकती हैं, उन्हें कॉपी नहीं किया जाना चाहिए, केवल संपादित किया जाना चाहिए। यह एक फ़ोल्डर के अंदर सभी फ़ाइलों और सबफ़ोल्डर में फ़ाइलों के लिए किया जाना चाहिए
जवाब
आप इस awk स्क्रिप्ट की कोशिश कर सकते हैं:
mkdir -p tmp
awk 'match($0, /<[^>]+>/) { k = substr($0, RSTART, RLENGTH)
   if (!(k in freq))
      freq[k] = n++
   $0 = substr($0, 1, RSTART-1) freq[k] substr($0, RSTART+RLENGTH) } { print $0 > ("tmp/" FILENAME)
}' file_{a,b}.txt
संशोधित फ़ाइलों को tmp/निर्देशिका में सहेजा जाएगा और आप उनकी सामग्री की जांच करने के बाद उन्हें वापस ले जा सकते हैं।
cat tmp/file_a.txt
123abc0xyz
efg
1ah
a2
2b
c0
cat tmp/file_b.txt
xyz2xyz
xyz1xyz