සුදු අවකාශය sed හි ගැලපෙන්නේ කෙසේද? මගේ දත්ත වලදී මට අවශ්ය වන්නේ 3+ පසුකාලීන සුදු අවකාශයේ අක්ෂර (ටැබ් අවකාශය) හා ඒවා අවකාශ 2 කින් ප්රතිස්ථාපනය කිරීමයි. මෙය කළ හැක්කේ කෙසේද?
සුදු අවකාශය sed හි ගැලපෙන්නේ කෙසේද? මගේ දත්ත වලදී මට අවශ්ය වන්නේ 3+ පසුකාලීන සුදු අවකාශයේ අක්ෂර (ටැබ් අවකාශය) හා ඒවා අවකාශ 2 කින් ප්රතිස්ථාපනය කිරීමයි. මෙය කළ හැක්කේ කෙසේද?
Answers:
අක්ෂර පන්තිය \s
හිස් අවකාශයේ අක්ෂර <tab>
හා ගැලපේ <space>
.
උදාහරණයක් වශයෙන්:
$ sed -e "s/\s\{3,\}/ /g" inputFile
අවම වශයෙන් සුදු අවකාශ 3 ක සෑම අනුක්රමයක්ම අවකාශ දෙකක් සමඟ ආදේශ කරයි.
සටහන : POSIX අනුකූලතාවය සඳහා, අක්ෂර පන්තිය [[:space:]]
වෙනුවට අක්ෂර පන්තිය භාවිතා කරන්න \s
, මන්දයත් GNU sed දිගුවක් වන බැවිනි. Sed සහ BRE සඳහා POSIX පිරිවිතර බලන්න
sed
මට වැඩ කිරීමට [[:space:]]
සිදු \s
නොවූයේ මට වැඩ නොකරන නිසාය . සමහර විට \s
යනු GNU sed දීර්ඝ?
[[:space:]
එකක් භාවිතා කළ හැකි [[:blank:]]
තිරස් ටැබ් සහ හිස් තැන් පමණක් (නමුත් කිසිදු හිස් පේලි ගැන, සිරස් ටැබ් ආදිය) ගැලපෙන කරන්නේ කුමන.
මෙය MacOS 10.8 හි ක්රියා කරයි:
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"
අවකාශ එකක් හෝ කිහිපයක් ගැලපීමට අවශ්යය .
-E
.
Sed හි සමහර පැරණි අනුවාදයන් space s සුදු අවකාශයට ගැලපෙන ටෝකනයක් ලෙස හඳුනා නොගනී. එවැනි අවස්ථාවක ඔබට අවකාශයන් හා ටැබ් එකක හෝ වැඩි ගණනක අනුපිළිවෙලක් '[XZ] [XZ] *' සමඟ සැසඳිය හැක, එහිදී X යනු අවකාශයක් වන අතර Z යනු පටිත්තකි.
sed 's/[ \t]*/"space or tab"/'
sed
ඕනෑම පද්ධතියක ඕනෑම අනුවාදයක වැඩ කිරීමට මෙය සහතික වී තිබේද? එසේ නොවේ නම්, මෙය අනෙක් පිළිතුරු වලට සමාන ආකාරයකින් ක්රියාත්මක වන්නේ කොතැනද යන්න සඳහන් කිරීම වටී, එබැවින් අපි සීමාවන් දනිමු. මෙහි අපේක්ෂිත ප්රති .ලය නොලැබිය හැකිය.