මම වෙනුවට පහත දැක්වෙන කේතය උත්සාහ 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
/
විචල්යයේ කප්පාදුවක් තිබේ නම් => මෙය මාව බේරා ගත්තේය! මගේ විචල්යය යූආර්එල් එකක් වන අතර එහි අඩංගු වේ /
. |
බෙදුම්කරු ලෙස භාවිතා කිරීමට මාරුවීම මගේ ගැටළුව විසඳා ඇත