සලකා බැලූ සෑම දෙයක්ම, සම්පූර්ණ ගොනුවම ගොබ්බ කිරීම වේගවත්ම ක්රමය විය හැකිය.
මූලික වාක්ය ඛණ්ඩය පහත පරිදි වේ:
sed -e '1h;2,$H;$!d;g' -e 's/__YOUR_REGEX_GOES_HERE__...'
මතක තබා ගන්න, ගොනුව විශාල නම් විශාල ගොබ්බය විකල්පයක් නොවනු ඇත. එවැනි අවස්ථාවන් සඳහා, මෙහි ලබා දී ඇති වෙනත් පිළිතුරු කුඩා මතක අඩිපාරක වැඩ කිරීමට සහතික වන අභිරුචි කළ විසඳුම් ඉදිරිපත් කරයි.
අනෙක් සියලුම අනවසර හා කප්පාදු තත්වයන් සඳහා, හුදෙක් -e '1h;2,$H;$!d;g'
ඔබේ මුල් sed
රීජෙක්ස් තර්කය අනුගමනය කිරීමෙන් පසුව එම කාර්යය ඉටු වේ.
උදා
$ echo -e "Dog\nFox\nCat\nSnake\n" | sed -e '1h;2,$H;$!d;g' -re 's/([^\n]*)\n([^\n]*)\n/Quick \2\nLazy \1\n/g'
Quick Fox
Lazy Dog
Quick Snake
Lazy Cat
මොකද කරන්නේ -e '1h;2,$H;$!d;g'
?
මෙම 1
, 2,$
, $!
කොටස් සීමාව සෘජුවම, පහත සඳහන් විධානය මත දිවෙන රේඛා එම රේඛාව නිශ්චයකක් වේ.
1
: පළමු පේළිය පමණි
2,$
: දෙවන පේළියේ සිට ආරම්භ වන සියලුම රේඛා
$!
: අන්තිම හැර අනෙක් සෑම පේළියක්ම
එතරම් පුළුල් වූ විට, N රේඛා ආදානයක එක් එක් පේළියේ සිදු වන්නේ මෙයයි.
1: h, d
2: H, d
3: H, d
.
.
N-2: H, d
N-1: H, d
N: H, g
මෙම g
විධානය රේඛාවක් විශේෂණයක් දී නැත, නමුත් පෙර d
අණ විශේෂ වගන්තියක් "ඇත අරඹන්න ඊළඟ චක්රය. ", සහ මේ තට්ටය පෑදීම g
පසුගිය හැර අන් සියලු පිලිවෙත් මත නවතයි.
එක් එක් විධානයෙහි අර්ථය සම්බන්ධයෙන්:
- පළමු
h
විසින් අනුගමනය H
එක් එක් පේලිය පිටපත් එල්ල ආදානය රේඛාවන් පවසයි sed
ගේ අල්ලා අවකාශය . (අත්තනෝමතික පෙළ බෆරය සිතන්න.)
- පසුව,
d
මෙම රේඛා ප්රතිදානයට ලිවීම වැළැක්වීම සඳහා එක් එක් පේළිය ඉවතලන්න. මෙම ග්රහණය අවකාශය කෙසේ වෙතත්, කල් තබා ගන්නා ඇත.
- අවසාන වශයෙන්, ඉතා පසුගිය මාර්ගයේ,
g
සිට සෑම රේඛාවක් සමුච්චය සුමුදු අල්ලා අවකාශය එසේ sed
මුළු ආදාන (ඒ වෙනුවට රේඛාවක්-at-a-කාලය විලාසිතා වඩා) මත එහි regex ක්රියාත්මක කිරීමට හැකි වන අතර, ඒ නිසා කරන්න පුළුවන් \n
s මත තරගය .