මට අවශ්‍ය වචනයක් අඩංගු පේළි හැර නොට්පෑඩ් ++ හි ඇති සියලුම පේළි මකන්න?


226

මා සතුව පෙළ ගොනුවක් ඇති අතර පේළි ආරම්භ කර තබා ගැනීමට අවශ්‍ය වන <Path>අතර අනෙක් සියලුම පේළි මකා දමන්න.

මම එය කරන්නේ කෙසේද?



2
LineFilter2 ප්ලගිනය ද භාවිතා කිරීමට පහසුය.
කාර්ස්ටන්

Answers:


320

මෙය සාක්ෂාත් කර ගැනීමට පහසු ක්‍රමයක් තිබේ. ඔබ පියවර 2 ක් කළ යුතුය.

  1. සෙවුම් මෙනුව වෙත යන්න> සොයන්න ...> "සලකුණු" ටැබය තෝරන්න. නිත්‍ය ප්‍රකාශන සක්‍රිය කරන්න. සොයන්න ^<Path>( ^පේළි ආරම්භය සඳහා වේ). "පිටු සලකුණු රේඛා" පරීක්ෂා කිරීමට අමතක නොකර "සියල්ල සලකුණු කරන්න" ඔබන්න

    ==> ඔබට තබා ගැනීමට අවශ්‍ය සියලුම පේළි වල පිටු සලකුණක් ඇත

  2. මෙනුව වෙත යන්න "සොයන්න - පිටු සලකුණ - සලකුණු නොකළ රේඛා ඉවත් කරන්න"

    ==> පිටු සලකුණු නොකළ සියලුම රේඛා මකා දමනු ලැබේ.


51
+1. හොඳයි, මේ ගැන දැනගෙන හිටියේ නැහැ. යම් කාලයක් ඉතිරි කර ගත හැකි “සලකුණු නොකළ රේඛා ඉවත් කරන්න” හෝ “සලකුණු කළ රේඛා කැපීම / පිටපත් කිරීම” සඳහා විකල්ප තිබේ.
ඩීසල්

6
මගේ මුලදී (6.2.3) නොට්පෑඩ් ++ හි "මාර්ක් ටැබ්" නම් මෙනු අයිතමයක් නොමැති නිසා මට මුලින් කරදර ඇති විය. ඒ වෙනුවට, ඔබ "සෙවීම" -> "සොයන්න ..." -> "සලකුණු" ටැබය මත ක්ලික් කළ යුතුය. තවද ඔබට තවදුරටත් පිටු සලකුණු ප්‍රතිලෝම කිරීමට අවශ්‍ය නැත. Notepad ++ හි දැන් "සලකුණු නොකළ රේඛා ඉවත් කරන්න" ඇත. නමුත් ඔබේ ඉඟිය මට ගොඩක් උදව් කළා! ස්තූතියි!
aakoch

23
ඔබට 2 වන පියවර මඟ හැරිය හැක, මන්ද එය (අවම වශයෙන් v6.4.5 සිට) "සලකුණු නොකළ රේඛා ඉවත් කරන්න" තෝරා ගත හැකි බැවිනි.
ජූලියන්

4
මම මෙතරම් කාලයක් නොට්පෑඩ් ++ භාවිතා කරන අතර මීට පෙර 'පොත් සලකුණු' යනු කුමක්දැයි මම නොදනිමි. එම මෙවලම කෙතරම් බලවත්ද යන්න සහ මම ඒ ගැන දන්නේ අල්ප වශයෙනි.
ඩැනුබියන් නාවිකයා

ඔබ දක්ෂයෙක්. මෙය ඔබ සැබෑ ලෙස භාවිතා කරන මෙවලම දැන ගන්නේ කෙසේද යන්න පිළිබඳ තවත් කම්පිත උදාහරණයකි.
මාර්සෙලෝ ග්‍රෙචි ලින්ස්

67

6.3 වන විට මෙය පියවර දෙකකින් කළ හැකිය. මම මුලින් උත්සාහ කළ විට එය 5.9 ට වඩා කලින් කළ හැකි යැයි මම සිතමි.

මෙම පිළිතුරේ පදනම ලෙස ස්ටෙමාගේ පෝස්ට් භාවිතා කිරීම. දැන් අඩු පියවරක් තිබේ. රේඛා සලකුණු කර සලකුණු නොකළ රේඛා ඉවත් කරන්න. සිදු විය. සවිස්තරාත්මක උපදෙස් අනුගමනය කරයි.

  1. සෙවුම් මෙනුව "සොයන්න". සොයන්න සංවාද කොටසේ, "සලකුණු කරන්න" ටැබය ක්ලික් කරන්න. නිත්‍ය ප්‍රකාශන සක්‍රිය කරන්න. සොයන්න ^<Path>( ^පේළි ආරම්භය සඳහා වේ). "පිටු සලකුණු රේඛා" පරීක්ෂා කිරීමට අමතක නොකර "සියල්ල සලකුණු කරන්න" ඔබන්න

    ==> ඔබට දැන් තබා ගැනීමට අවශ්‍ය සියලුම පේළි වල පිටු සලකුණක් ඇත

  2. සෙවුම් මෙනුව -> පිටු සලකුණ -> සලකුණු නොකළ රේඛා ඉවත් කරන්න.

    ==> සියලුම NON පිටු සලකුණු කළ රේඛා මකා දමනු ලැබේ.


3
මෙය මට තත්පර 10 ක් ගත වූ අතර අනෙක් විසඳුම මට තත්පර 20 ක් ගතවිය. Thx!
කළු

^මගේ සෙවුම් පදයෙහි එකතු කිරීමට හෝ සාමාන්‍ය ප්‍රකාශනයක් භාවිතා කිරීමට මට අවශ්‍ය නොවීය. මෙය යමෙකුට උපකාරී වේ යැයි සිතමි.
sa_leinad

30

පිරිසිදු රීජෙක්ස් පමණක් විසඳුම

පියවර දෙකක ප්‍රභේදය

  1. regex ප්රතිස්ථාපනය කරන්න

    (?!^.*test.*$)^.+
    

    ඔබ ඉල්ලූ පෙළ සමඟ පරීක්ෂණය ප්‍රතිස්ථාපනය කරන්න

  2. ප්රතිස්ථාපනය කරන්න

    [\r\n]{2,}
    

    සමග \r\n

තනි පියවර ප්‍රභේදය

^(?!<Path>).*\r\nතරඟ හිස් හිස් වෙනුවට ආදේශ කිරීමට භාවිතා කරන්න . සාමාන්‍යකරණය කළ අනුවාදය වනු ඇත ^(?!.*?test).*\r\n. මෙය ගොනුවේ අවසානයේ හිස් රේඛාව ඉවත් නොකරයි. අඛණ්ඩව හිස් පේළි කිහිපයක් ඇතුළුව අනෙක් සියලුම රේඛා ඉවත් කරනු ලැබේ.

පැහැදිලි කිරීම:

  1. (?!)a ණාත්මක බැල්මකි. ^.*test.*$ ඉල්ලූ පෙළ අඩංගු මුළු පේළියම තෝරා ගනී.

  2. [\r\n]{2,}\r\nමෙය වින්ඩෝස් නව රේඛාව වූ පසු වැඩි වශයෙන් සිදුවන ඕනෑම දෙයකට ගැලපේ . ඔබට ලිනක්ස් හෝ වෙනත් මෙහෙයුම් පද්ධතියක් තිබේ නම් ඔබට මෙය අවුල් කිරීමට අවශ්‍ය වනු ඇත. දෙවැන්න එය එක් ප්‍රතිලාභ රේඛාවකින් ප්‍රතිස්ථාපනය කිරීමයි.


1
ජනතාවට සටහන: සමහර විට රේඛාවේ අවසානය (EOL) සමඟ රීජෙක්ස් "ක්‍රියා නොකරයි". ලිපියේ \r\nසඳහන් EOL යනු වින්ඩෝස් භාවිතා කරන දේ වන අතර එබැවින් ඔබ සොයන දේ හෝ නොවිය හැකිය. බොහෝ විට ලිනක්ස් පරිසරය තුළ එය සාධාරණ ය \n, නැතහොත් මැක් පරිසරය තුළ ය \r, එබැවින් ඔබ ගොනුවක් එකකින් අදින්නේ නම් එය වින්ඩෝස් විලාසිතාවේ ඊඕඑල් නොවනු ඇත. කෙසේ වෙතත්, ඔබ FileZilla හා ASCII මාදිලිය ප්රේරක හරහා බාගත නම්, එය වෙනස් විය හැක නැවත වින්ඩෝස් EOL බවට (වගේ \nබවට \r\n). එබැවින් රීජෙක්ස් ක්‍රියා නොකරන්නේ නම්, "දර්ශනය> සංකේත පෙන්වන්න> පේළියේ අවසානය පෙන්වන්න" වෙත ගොස් EOL විලාසය පරීක්ෂා කරන්න. CR = \r. එල්එෆ් = \n.
ධූපින්

5

මට පෙනෙන පරිදි පහසුම ක්‍රමය වන්නේ “වත්මන් ලේඛනයේ සියල්ල සොයාගන්න” විශේෂාංගය භාවිතා කර ප්‍රති results ල නව ගොනුවකට පිටපත් කිරීම හෝ සියල්ල තෝරාගෙන වර්තමාන එක වෙනුවට ආදේශ කිරීමයි.

මෙය ඔබගේ පෙළ අඩංගු සියලුම රේඛා සොයාගෙන ඒවා පතුලේ ලැයිස්තු ගත කරයි. සෙවුම් ප්‍රති result ලය මත දකුණු ක්ලික් කර පිටපත් කරන්න / අලවන්න.


ආදේශ කිරීමෙන් ඔබට රේඛා අංක ඉවත් කළ \tLine [\d]*: යුතුය. තවමත් විශිෂ්ට පිළිතුරකි.
නූමනන්

නොට්පෑඩ් ++ සෙවුම් ප්‍රති results ල කවුළුව තුළ එය කප්පාදු කරන තරම් පුළුල් රේඛා සඳහා මෙය ක්‍රියා නොකරනු ඇත.
මාස්ටර්ජෝ 2

4

මෙනුවට යන්න සෙවීම -> සොයන්න ... -> සාමාන්‍ය ප්‍රකාශන සක්‍රිය කරන්න. "^ මාර්ගය " සඳහා සොයන්න (line රේඛාව ආරම්භ කිරීම සඳහා වේ).

"වත්මන් ලේඛනයේ සියල්ල සොයන්න" බොත්තම ක්ලික් කරන්න.

"ප්‍රති result ලය සොයන්න" කවුළුව රටාවේ සියලුම රේඛා සමඟ දිස්වනු ඇත. නොට්පෑඩ් ++ හි නව පටිත්තකට පිටපත් කිරීම / ඇලවීම තෝරන්න.

මෙම නව පටිත්තෙහි, ලැබුනේ: මෙනුව සෙවීම -> ප්‍රතිස්ථාපනය කරන්න ... -> සාමාන්‍ය ප්‍රකාශන සක්‍රිය කරන්න.

"කුමක්ද සොයන්න:" ක්ෂේත්‍රය තුළ, රටාව භාවිතා කරන්න: "රේඛාව \ d +:". "ආදේශ කරන්න:" ක්ෂේත්‍රය හිස්ව තබන්න.

"සියල්ල ප්‍රතිස්ථාපනය කරන්න" බොත්තම ක්ලික් කරන්න.


3

ඔබට සැබවින්ම ගැලපීමට අවශ්‍ය වන්නේ <Path>ගොනු පද්ධති මාර්ගයක් නොව, ඔබට මෙය පර්ල් භාවිතා කර විධාන රේඛාවකින් උත්සාහ කළ හැකිය:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

එය වින්ඩෝස් හි ස්ට්‍රෝබෙරි පර්ල් සමඟ වැඩ කළ අතර, ප්‍රති results ල ඔබ අපේක්ෂා කරන දේ නොවේ නම් ඒ අනුව සකස් කරන්න.


3

එය අවුල් සහගත ය, නමුත් ඒ සියල්ල එක්සෙල් වෙත පිටපත් කරන්න , ඉන්පසු =IF(LEFT(A1,6)="<Path>",A1,"")එම සූත්‍රය භාවිතා කර පිටපත් කරන්න. ඉන්පසු එය නැවත නොට්පෑඩ් ++ වෙත පිටපත් කරන්න. එය පරිපූර්ණ නොවේ, නමුත් එය ඉතා පහසුය (ඔබට එක්සෙල් තිබේ නම්). අවවාදයයි: එය ඉන්ඩෙන්ට් රේඛා සමඟ හොඳින් ක්‍රියා නොකරනු ඇත (එක්සෙල් තීරු මාරු කරයි, ආදිය).


මෙම කාර්යය කෙලින්ම හැසිරවීමට ක්‍රම ගණනාවක් ඇති විට, වෙනත් යෙදුමකට විනාශකාරී ලෙස පිටපත් කිරීමට, එහි ක්‍රියාවලියට සහ ආපසු මාරු කිරීමට ඔබට අවශ්‍ය ඇයි?
බෝල්ඩ්රික්

2

නොට්පෑඩ් ++ සමඟ ඔබට අවශ්‍ය දේ කිරීමට පහසු ක්‍රමයක් නොමැත. ඔබට ඔබේ පරිගණකයට වැඩසටහනක් බාගත කිරීමට හෝ VB හි යමක් ස්ක්‍රිප්ට් කිරීමට අවශ්‍ය වනු ඇත (මම හිතන්නේ ඔබ වින්ඩෝස් හි සිටී).

ඔබට අවශ්‍ය දේ ක්‍රම දෙකෙන් එකක් සෙඩ් සමඟ කළ හැකිය. Sed උපයෝගීතාව * nix හි ප්‍රියතම එකක් වන අතර එය වින්ඩෝස් සඳහා GnuWin ( http://gnuwin32.sourceforge.net/packages/sed.htm ) හි විශිෂ්ට පුද්ගලයින්ගෙන් සොයාගත හැකිය . ඔබ මෙම වැඩසටහන බාගත කර විධාන විමසුමේ සිට ඔබේ විධානය ක්‍රියාත්මක කරන්න.

අඩංගු නොවන සියලුම රේඛා මකන්න:
sed -i '/^<PATH>/!d' file

නව ගොනුවකට අඩංගු සියලුම පේළි මුද්‍රණය කරන්න:
sed -n '/^<PATH>/p' file > newfile

නව ගොනුවකට අවශ්‍ය රේඛා මුද්‍රණය කිරීමට මම යෝජනා කරමි. මෙයට හේතුව ඔබට පළමු වරට රීජෙක්ස් ප්‍රකාශය නොලැබීමයි. Sed උපයෝගීතාව නිත්‍ය ප්‍රකාශන මූලික සින්ටැක්ස් භාවිතා කරයි (යොමුව http://www.regular-expressions.info/reference.html හි බලන්න ). * නික්ස් මාවතක් (/ var / www) වැනි දෙයක් නම්, එවිට ඔබේ රීජෙක්ස් වැඩ කිරීමට ඔබට / අක්ෂරයෙන් ගැලවිය යුතුය.

උදාහරණය: sed -n '/^\/var\/www/p' file > newfile
මෙය '/ var / www' සමඟ ආරම්භ වන සියලුම පේළි මුද්‍රණය කරයි. මම / අක්ෂරයෙන් බේරීමට ගොනු කළා නම්, විධානය මඟින් දෝෂයක් ඇතිවීමට ඉඩ තිබුණි. බැක්ස්ලෑෂ් අක්ෂරය with සමඟ ඔබට විශේෂ අක්ෂරයකින් (/ වැනි) ගැලවිය හැකිය.


මෙය පැරණි පිළිතුරක් විය හැකි නමුත් ඇත්ත වශයෙන්ම එය විශ්වාස කළ නොහැකි ලෙස ඡන්ද 2 ක් ඇති හෙයින් (-1 දැන් මගෙන්) එය කොතරම් වැරදිද යන්න ගැන අදහස් දැක්වීමට අවශ්‍ය වූවා පමණක් නොව, සිංගල් විධාන මෙහෙයුමකින් නැවත අවධාරණය කරන්න. මෙම නඩුවේ එක් වචනයක් (හෝ වාක්‍ය ඛණ්ඩයක්) අඩංගු පේළි 34 ට ලොග් ගොනුව තත්පර 3 ට අඩු කාලයකදී “දෝෂයක්” ලෙස සලකන්න. මෙම රීජෙක් එක FIND හි සඳහන් කිරීමෙන්: ^ (?!. *? දෝෂය) n සහ හිස්ව ප්‍රතිස්ථාපනය කරන්න, සහ ". නව රේඛාවට ගැලපේ" තෝරා නොගෙන "සියල්ල ප්‍රතිස්ථාපනය කරන්න" ක්ලික් කරන්න. ඔව්, මමත් අවුල් සහගතයි. නමුත් එන්පීපීයට මෙය කළ නොහැකි යැයි පැවසීම අසත්‍යයකි.
කොලින් චැෆින්

1

රීජෙක්ස් ප්‍රතිස්ථාපනය සමඟ වඩා හොඳ විසඳුම:

(?!^.*SOMETEXT.*$)^.+\r?\n

කිසිවක් වෙනුවට ආදේශ කරන්න


1
සුපිරි පරිශීලකයා වෙත සාදරයෙන් පිළිගනිමු! එක් එක් රීජෙක්ස් කරන්නේ කුමක්දැයි නොදන්නා අය සඳහා මෙය පැහැදිලි කිරීමට සැලකිලිමත්ද? :)
බර්ටිබ්

0

සෙවුම්-> ප්‍රතිස්ථාපනය කර නිත්‍ය ප්‍රකාශනයක් ඇතුළු කර ^[^ ].*සියල්ල හිස් නූලකින් ආදේශ කරන්න Regular expression. මීලඟ පියවර වන්නේ කිහිප වතාවක් භාවිතා කිරීම \n\nවෙනුවට ආදේශ කිරීම සඳහා හිස් රේඛා සෙවීමයි (භාවිතා කිරීම සහ ගොනු ආකෘතිය අනුව). ඔබට පේළියක හිස් රේඛා බොහොමයක් තිබේ නම්, එය භාවිතා කිරීමට ඉක්මන් හෝ ඊටත් වඩා වැඩි ය : සෙවුම් දාමයේ .\nExtended0 occurrences were found.\r\n\r\n\r\n\n\n\n\n\n\n\n\n

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.