මම වෙනුවට පහත දැක්වෙන කේතය උත්සාහ QQසමග ZZ, නමුත් එය මට ඕන දේ කරන්න නොවේ:
var1=QQ
sed -i 's/$var1/ZZ/g' $file
කෙසේ වෙතත්, මෙම කේතය මට අවශ්ය දේ කරයි:
sed -i 's/QQ/ZZ/g' $file
මම විචල්යයන් භාවිතා කරන්නේ කෙසේද sed?
මම වෙනුවට පහත දැක්වෙන කේතය උත්සාහ QQසමග ZZ, නමුත් එය මට ඕන දේ කරන්න නොවේ:
var1=QQ
sed -i 's/$var1/ZZ/g' $file
කෙසේ වෙතත්, මෙම කේතය මට අවශ්ය දේ කරයි:
sed -i 's/QQ/ZZ/g' $file
මම විචල්යයන් භාවිතා කරන්නේ කෙසේද sed?
Answers:
විචල්යයන් පුළුල් කිරීම සඳහා කවචය වගකිව යුතුය. ඔබ නූල් සඳහා තනි මිල කැඳවීම් භාවිතා කරන විට, එහි අන්තර්ගතය නිසා, වචනාර්ථයෙන් ප්රතිකාර කරනු ඇත sedදැන් ප්රායෝගික සෑම සිදුවීමක් වෙනුවට උත්සාහ $var1විසින් ZZ.
හිස් අවකාශය ආරක්ෂා කර ගනිමින් ෂෙල් පුළුල් විචල්යයන් බවට පත් කිරීම සඳහා ද්විත්ව උපුටා දැක්වීම් භාවිතා කරන්න:
sed -i "s/$var1/ZZ/g" "$file"
ප්රතිස්ථාපන නූලෙහි ඔබට උපුටා දැක්වීමේ අක්ෂරය අවශ්ය වූ විට, ඔබට එය පෙර-බෑවුමකින් පෙර කළ යුතු අතර එය කවචය මගින් අර්ථ නිරූපණය කෙරේ. පහත දැක්වෙන උදාහරණයේ දී, නූල quote meප්රතිස්ථාපනය වේ "quote me"(අක්ෂරය &අර්ථ නිරූපණය කරන්නේ sed):
sed -i "s/quote me/\"&\"/" "$file"
ඔබ සතුව ෂෙල් මෙටා-අක්ෂර ගොඩක් තිබේ නම්, රටාව සඳහා තනි උපුටා දැක්වීම් සහ විචල්යය සඳහා ද්විත්ව උපුටා දැක්වීම් සලකා බලන්න:
sed -i 's,'"$pattern"',Say hurrah to &: \0/,' "$file"
s,pattern,replacement,ඒ වෙනුවට මා භාවිතා කරන ආකාරය සැලකිල්ලට ගන්න s/pattern/replacement/, මම එය කළේ /ඇතුළට බාධා නොකිරීමටයි \0/.
කවචය sedඊළඟ විධානය සමඟ ඉහත විධානය ක්රියාත්මක කරයි (උපකල්පනය pattern=bertසහ file=text.txt):
-i
s,bert,Say hurrah to &: \0/,
text.txt
file.txtඅඩංගු නම් bert, ප්රතිදානය වනුයේ:
Say hurrah to bert: \0/
gවිකල්පයක් බැවින් ඔබ ඒ s,foo,bar,gවෙනුවට සමත් වනු ඇත .
\\0ඒ වෙනුවට භාවිතා කිරීමට පෙළඹී \0ඇත්නම්, එය \0තනි උපුටා දැක්වීම්වල ඇතුළත් කර ඇති විට එය නොකළ යුතුය . එසේ නොමැතිනම් සමස්ත තරගය වෙනුවට sedවචනාර්ථයෙන් රටාව ආදේශ කරනු ඇත \0.
sed 's/'"${foo}"'/replacement/'
sedද්විත්ව මිල ගණන් භාවිතා කිරීමේදී අපට විචල්යයන් භාවිතා කළ හැකිය :
sed -i "s/$var/r_str/g" file_name
ඔබට /විචල්යයේ කප්පාදුවක් තිබේ නම් පහත දැක්වෙන පරිදි විවිධ බෙදුම්කරු භාවිතා කරන්න:
sed -i "s|$var|r_str|g" file_name
/විචල්යයේ කප්පාදුවක් තිබේ නම් => මෙය මාව බේරා ගත්තේය! මගේ විචල්යය යූආර්එල් එකක් වන අතර එහි අඩංගු වේ /. |බෙදුම්කරු ලෙස භාවිතා කිරීමට මාරුවීම මගේ ගැටළුව විසඳා ඇත