Sed ഉപയോഗിച്ച് ഒരു ഫയലിൽ നിന്ന് നിർദ്ദിഷ്ട വരികൾ എങ്ങനെ ഇല്ലാതാക്കാം

ചില അവസരങ്ങളിൽ‌ ഞങ്ങൾ‌ ഒരു ഫയലിൽ‌ നിന്നും അല്ലെങ്കിൽ‌ അതിൽ‌ നിന്നും ഒരു നിർ‌ദ്ദിഷ്‌ട വരി ഇല്ലാതാക്കേണ്ടതുണ്ട്, ഉദാഹരണത്തിന്, എനിക്ക് ഫയലുകളുടെ ഒരു മുഴുവൻ പട്ടികയും ഉണ്ടായിട്ടുണ്ട്, കൂടാതെ ഇവയിൽ # 27 വരി ഇല്ലാതാക്കേണ്ടതുമാണ് (വരി # 27 അതാണ് ഒരു എസി‌എൽ, മാനദണ്ഡം, റൂൾ‌, കോൺ‌ഫിഗറേഷൻ‌), എനിക്ക് ഫയൽ‌ വഴി ഫയൽ‌ എഡിറ്റുചെയ്യാൻ‌ കഴിയും അല്ലെങ്കിൽ‌ കമാൻഡ് ഉപയോഗിച്ച് എനിക്ക് ആവശ്യമുള്ളത് നേടാൻ‌ കഴിയും sed ഒരു ബാഷ് സ്ക്രിപ്റ്റും (ഓപ്ഷണൽ).

പക്ഷേ, ഒരൊറ്റ ഫയൽ കുറച്ച് ലളിതമായി ശ്രമിക്കാം.

ഞങ്ങൾക്ക് ഫയൽ ഉണ്ട് distros-deb.txt ഇതിൽ ഇത് അടങ്ങിയിരിക്കുന്നു:

debian

കുബുണ്ടു

archlinux

സോളസുകൾ

പുതിന

അതായത് ഫയൽ distros-deb.txt അതിൽ ഞങ്ങൾ ഡെബിയൻ അധിഷ്ഠിത ഡിസ്ട്രോകൾ ഇടും, പക്ഷേ അവിടെ # 3 വരിയിൽ "ആർക്ക്ലിനക്സ്" എന്ന് കാണാം, ഇത് ഡെബിയനുമായി യാതൊരു ബന്ധവുമില്ലാത്ത ഒരു ഡിസ്ട്രോ ആണ്, അതിനാൽ ഞങ്ങൾ ആ വരി ഇല്ലാതാക്കണം. ആ ഫയലിന്റെ # 3 വരി ഇല്ലാതാക്കാൻ ഞങ്ങൾ ഇനിപ്പറയുന്നവ ഇടും:

sed "3d" distros-deb.txt > distros-deb-ok.txt

ഈ വരി വിശദീകരിക്കുന്നത് കുറച്ച് എളുപ്പമാണ് ദാഹം "3 ദി" # 3 വരി ഇല്ലാതാക്കുമെന്ന് ഞങ്ങൾ സൂചിപ്പിക്കുന്നു distros-deb.txt ഏത് ഫയലിലാണ് പ്രവർത്തിക്കേണ്ടതെന്ന് ഞങ്ങൾ സൂചിപ്പിക്കുന്നു, അതായത്, ഈ ഫയലിന്റെ # 3 വരി ഇല്ലാതാക്കുക, ഇവിടെ വരെ എന്റർ അമർത്തിയാൽ അത് നമുക്ക് ആവശ്യമുള്ളത് കാണിക്കും, പക്ഷേ ടെർമിനലിൽ, അങ്ങനെ > distros-deb-ok.txt ഫലം ടെർമിനലിൽ കാണിക്കുന്നതിനുപകരം, ഈ പേരിലുള്ള ഒരു ഫയലിൽ ഇടാൻ ഞങ്ങൾ സൂചിപ്പിക്കുന്നു.

എന്താണ് ലളിതം?

കൂടാതെ, നമുക്ക് ഇത് ഒഴിവാക്കാം > distros-deb-ok.txt ന്റെ ശരിയായ പാരാമീറ്റർ ഉപയോഗിക്കുന്നു sed, പാരാമീറ്റർ -i

അതായത്, ഫയലിൽ നിന്ന് വരി നീക്കം ചെയ്യുകയും അതേ പേരിൽ തന്നെ സംരക്ഷിക്കുകയും ചെയ്യണമെങ്കിൽ (മറ്റൊരു ഫയലിലല്ല), പാരാമീറ്റർ ചേർക്കുക -i :

sed -i "3d" distros-deb.txt

ഇത് distros-deb.txt ൽ നിന്ന് # 3 വരി നീക്കംചെയ്യുകയും സംരക്ഷിക്കുകയും ചെയ്യും.

എനിക്ക് ഒരുപാട് വരികൾ വേണമെങ്കിൽ, അതായത് # 3 വരി നീക്കംചെയ്യുകയും # 4 ഉം # 5 ഉം നീക്കംചെയ്യുകയും ചെയ്യുക? ഇത് നേടുന്നതിന് ഞങ്ങൾ 3 മുതൽ 5 വരെയുള്ള ശ്രേണി ഇട്ടു, അതായത്:

sed -i "3,5d" distros-deb.txt

ഇത് എന്നെ ഡെബിയനും കുബുണ്ടുവും മാത്രം കാണിക്കും

ആകെ വരികൾ അറിയാത്തപ്പോൾ, വരി 2 മുതൽ അവസാന വരി വരെ ഇല്ലാതാക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ എന്തുചെയ്യും?

ഡോളർ ചിഹ്നം ഉപയോഗിക്കുക - »$

sed -i "2,$d" distros-deb.txt

ആദ്യ വരിയിൽ നിന്ന് # 4 ലേക്ക് ഒഴിവാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ ഞങ്ങൾ തുടക്കത്തിൽ മൂല്യം 1 ഇടുക:

sed -i "1,4d" distros-deb.txt

ടാസ്‌ക്കുകൾ ഓട്ടോമേറ്റ് ചെയ്യുന്നതിന് ബാഷ് സ്ക്രിപ്റ്റുകൾ നിർമ്മിക്കാൻ നിങ്ങൾ താൽപ്പര്യപ്പെടുമ്പോൾ ഇത് വളരെ ഉപയോഗപ്രദമായ ഒരു ടിപ്പ് ആണ്, കൂടാതെ ഞങ്ങൾക്ക് ഉപയോഗിക്കാൻ കഴിയുന്ന പരിഷ്‌ക്കരണത്തിനായി കോൺഫിഗറേഷൻ ഫയലുകളുടെ വരികൾ പരിഷ്‌ക്കരിക്കുകയും ഇല്ലാതാക്കുകയും ചെയ്യേണ്ടതുണ്ട്. sed o മുത്ത്, ഒപ്പം ഉന്മൂലനം ചെയ്യുന്നതിനും സെഡ് with ഉപയോഗിച്ച് ഇത് എങ്ങനെ ചെയ്യണമെന്ന് ഞങ്ങൾക്ക് ഇതിനകം അറിയാം

നന്ദി!


ലേഖനത്തിന്റെ ഉള്ളടക്കം ഞങ്ങളുടെ തത്ത്വങ്ങൾ പാലിക്കുന്നു എഡിറ്റോറിയൽ എത്തിക്സ്. ഒരു പിശക് റിപ്പോർട്ടുചെയ്യാൻ ക്ലിക്കുചെയ്യുക ഇവിടെ.

16 അഭിപ്രായങ്ങൾ, നിങ്ങളുടേത് വിടുക

നിങ്ങളുടെ അഭിപ്രായം ഇടുക

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിച്ചു ചെയ്യില്ല.

*

*

  1. ഡാറ്റയുടെ ഉത്തരവാദിത്തം: മിഗുവൽ ഏഞ്ചൽ ഗാറ്റൻ
  2. ഡാറ്റയുടെ ഉദ്ദേശ്യം: സ്പാം നിയന്ത്രിക്കുക, അഭിപ്രായ മാനേജുമെന്റ്.
  3. നിയമസാധുത: നിങ്ങളുടെ സമ്മതം
  4. ഡാറ്റയുടെ ആശയവിനിമയം: നിയമപരമായ ബാധ്യതയല്ലാതെ ഡാറ്റ മൂന്നാം കക്ഷികളുമായി ആശയവിനിമയം നടത്തുകയില്ല.
  5. ഡാറ്റ സംഭരണം: ഒസെന്റസ് നെറ്റ്‌വർക്കുകൾ (ഇയു) ഹോസ്റ്റുചെയ്യുന്ന ഡാറ്റാബേസ്
  6. അവകാശങ്ങൾ: ഏത് സമയത്തും നിങ്ങളുടെ വിവരങ്ങൾ പരിമിതപ്പെടുത്താനും വീണ്ടെടുക്കാനും ഇല്ലാതാക്കാനും കഴിയും.

  1.   mss-devel പറഞ്ഞു

    വളരെ നല്ല സംഭാവന

    1.    KZKG ^ Gaara പറഞ്ഞു

      നന്ദി

      വഴിയിൽ, ഞങ്ങൾക്ക് ഇപ്പോൾ നിങ്ങളുടെ ഇമെയിൽ ലഭിച്ചു, ഞാൻ നിങ്ങൾക്ക് ഉത്തരം നൽകുന്നു

      നന്ദി!

  2.   പേരില്ലാത്ത പറഞ്ഞു

    ടെർമിനൽ, സെർവറുകൾ, എസ്എസ് കണക്ഷനുകൾ എന്നിവയുടെ പ്രധാന പുരോഹിതൻ എന്ന നിലയിൽ ഞാൻ നിങ്ങളിലേക്ക് വരുന്നു, ഓ മഹത്തായ KZKG ^ ഗാര, ഞാൻ നിങ്ങളോട് ചോദിക്കുന്നു: എന്റെ അജ്ഞതയുടെ തലത്തിൽ ഒരു ട്യൂട്ടോറിയൽ എവിടെ നിന്ന് ലഭിക്കും, അത് രണ്ട് വിദൂര മെഷീനുകൾക്കിടയിൽ ssh കണക്ഷനുകൾ ഉപയോഗിക്കാൻ എന്നെ അനുവദിക്കുന്നു ടെക്സ്റ്റ് ഫയലുകൾ, പിഡിഎഫ്, ഇമേജ്, ശബ്‌ദം (എം‌പി 3) പങ്കിടുന്നതിന് വ്യത്യസ്ത നെറ്റ്‌വർക്കുകളിൽ….

    🙂

    ഗൗരവമായി, ഇക്കാര്യത്തിൽ നിങ്ങൾക്ക് എന്നെ നയിക്കാൻ കഴിയുമോ, എനിക്ക് രണ്ട് മെഷീനുകൾ ഉണ്ട്, ഒന്ന് ജോലിസ്ഥലത്തും മറ്റൊന്ന് വീട്ടിലും എനിക്ക് അവ തമ്മിൽ ഒരു എസ്എസ് കണക്ഷൻ ആവശ്യമാണ് (കാരണം ഞാൻ മനസിലാക്കുന്നത് പോലെ, മെഷീനുകൾക്കിടയിൽ ഉള്ളടക്കം പങ്കിടാൻ എസ്എച്ച് അനുവദിക്കുന്നു, ഞാൻ തെറ്റാണോ? ).
    ഞാൻ തെറ്റാണെങ്കിൽ, ഏത് ആപ്ലിക്കേഷനാണ് നിങ്ങൾ ശുപാർശ ചെയ്യുന്നത്?
    ഇക്കാര്യത്തിൽ ഒരു അടിസ്ഥാന ട്യൂട്ടോറിയൽ ഞാൻ എവിടെ കണ്ടെത്തും?

    1.    -സ്പൈക്കർ- പറഞ്ഞു

      scp

      scp ഉപയോക്താവ് @ machine_address: പാത്ത് ഉപയോക്താവ് @ machine_address: പാത്ത്.

      സിപിയുടെ അതേ വാക്യഘടന, ഉറവിടം -> ലക്ഷ്യസ്ഥാനം.

  3.   F3niX പറഞ്ഞു

    നിങ്ങൾ മനുഷ്യനെ കാണിച്ചു, നിങ്ങൾ നഷ്ടപ്പെട്ടു.

  4.   ജോക്വിൻ പറഞ്ഞു

    നല്ല ടിപ്പ്!

  5.   ലൈക്കസ് ഹാക്കർ എമോ പറഞ്ഞു

    രസകരമായ നുറുങ്ങ്… xD

    ആകസ്മികമായി, ബോൾഡ് വാചകം വേറിട്ടുനിൽക്കുന്ന ഒന്ന് നിങ്ങൾക്ക് അറിയില്ലേ?
    അതായത്, എനിക്ക് ഒരു ടെക്സ്റ്റ് ഫയൽ ഉണ്ട്, അത് ഒരു നിഘണ്ടു ആണ്, അതിൽ 10000 ലധികം വരികളുണ്ട്, കൂടാതെ ":" സസ്പെൻഷൻ പോയിന്റുകൾക്ക് മുമ്പായി ചില വാചകം ഹൈലൈറ്റ് ചെയ്യാനും അത് ഓരോന്നായി ചെയ്യുന്നത് വളരെയധികം ആകാനും ഞാൻ ആഗ്രഹിക്കുന്നു.

    1.    KZKG ^ Gaara പറഞ്ഞു

      ഹലോ,

      ഒരു ടെക്സ്റ്റ് ഫയൽ പ്ലെയിൻ ടെക്സ്റ്റാണ്, അതിന്റെ പേര് സൂചിപ്പിക്കുന്നത് പോലെ ... പ്ലെയിൻ, ഫോർമാറ്റുകളോ സമാനമായ ഒന്നും ഇല്ലാതെ, ക്ഷമിക്കണം, എന്നാൽ നിങ്ങൾ ആവശ്യപ്പെടുന്നത് ചെയ്യാൻ കഴിയില്ലെന്ന് ഞാൻ കരുതുന്നു, അതിന് കഴിയുമോ? 🙁

      നന്ദി!

      1.    aca പറഞ്ഞു

        യഥാർത്ഥത്തിൽ അതിന് കഴിയും, പക്ഷേ നിങ്ങൾ ലക്ഷ്യസ്ഥാന ഫോർമാറ്റ് അറിയേണ്ടതുണ്ട്.
        ഉദാ:
        എക്കോ $ (എക്കോ "റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
        ഇത് നേടേണ്ട കാര്യമാണ്.
        ഉപയോഗിക്കാൻ‌ കഴിയുന്ന മറ്റൊരു മാർ‌ഗ്ഗം sed '/' $ 1 '/ d' ആണ്, പക്ഷേ നിങ്ങൾ‌ വീണ്ടും ഉറപ്പാക്കണം.

        1.    ലൈക്കസ് ഹാക്കർ എമോ പറഞ്ഞു

          * .odt- ൽ സംരക്ഷിക്കുന്നത് പൂർത്തിയാക്കുക

          ലിബ്രെ ഓഫീസ് ഉപയോഗിച്ച് ഇത് ചെയ്യാൻ എളുപ്പമുള്ള മാർഗമില്ലേ?

  6.   ലോല്ലോ പറഞ്ഞു

    നിങ്ങൾക്ക് ഒരു വരിയുടെ ഭാഗം ഇല്ലാതാക്കി ബാക്കിയുള്ളവ ഉപേക്ഷിക്കാമോ?

    ഒരു നിശ്ചിത വരിയിലെ ഒരു വാക്കിന് മുന്നിലുള്ള എല്ലാം ഇല്ലാതാക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു.

    അല്ലെങ്കിൽ ആ വാക്ക് പിന്തുടരുന്ന എല്ലാം ഇല്ലാതാക്കുക.

    1.    aca പറഞ്ഞു

      അതെ, ഇത് ഒരു റിജെക്സ് വലിച്ചിടേണ്ട കാര്യമാണ് (ആവശ്യമെങ്കിൽ man sed -r, –regexp- എക്സ്റ്റെൻഡഡ്)
      ഞാൻ കണ്ടെത്തിയതിൽ നിന്ന് ആരംഭിക്കുന്നു
      എക്കോ «റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക »| sed 's / Change //'
      നന്നായി നിർവചിക്കപ്പെട്ട പാറ്റേൺ ഉപയോഗിച്ച്. (ഒരു പ്രതീകം) കൂടാതെ * (ഒന്നിൽ കൂടുതൽ)
      ശേഷം:
      എക്കോ «റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക »| sed / s / മാറ്റുക. * // '
      മുമ്പ്:
      എക്കോ «റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക »| sed 's /. * മാറ്റുക //'
      വാക്ക് ദൃശ്യമാകുന്നത് പ്രധാനമാണെങ്കിൽ
      എക്കോ «റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക »| sed 's / Change. * / മാറ്റുക /'
      അല്ലെങ്കിൽ കൂടുതൽ വിശദമായി
      മാറ്റത്തിന് ശേഷമുള്ളത് റോബർട്ട് ഉൾക്കൊള്ളുന്ന വരിയിൽ
      echo -e «ഫ്രിറ്റ്സ്: ഹലോ. ഇവിടെ മാറ്റുക \ n റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക »| sed '/Robert/s/Cambio.*//'
      അല്ലെങ്കിൽ തുടക്കത്തിൽ പോലെ രണ്ടാമത്തെ വരി പുറത്തെടുത്ത് ബാക്കിയുള്ളവ പ്രോസസ്സ് ചെയ്യുക
      echo -e «ഫ്രിറ്റ്സ്: ഹലോ. ഇവിടെ മാറ്റുക \ n റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക \ n മറ്റ് »| sed -e 2d -e ന്റെ / മാറ്റം. * // '
      echo -e «ഫ്രിറ്റ്സ്: ഹലോ. ഇവിടെ മാറ്റുക \ n റോബർട്ട്: ഹലോ. ഇവിടെ മാറ്റുക \ n മറ്റ് »| sed '2d; s / Change. * //'

      1.    ലോല്ലോ പറഞ്ഞു

        നന്ദി, ഇത് എനിക്ക് വളരെ ഉപയോഗപ്രദമാണ്.

  7.   ബേസിക് പറഞ്ഞു

    നല്ല ലേഖനം, ഞാൻ ഇഷ്ടപ്പെടുന്ന ഒന്നാണ്, എത്ര വലിയ സിസ്അഡ്മിൻ!
    സെഡ്, വിസ്മയം, പേൾ, ഗ്രെപ്പ്, വാൽ, തല, "ഇമാക്സ്" എന്നിവയും മറ്റ് നിരവധി അവശ്യ ഉപകരണങ്ങളും ഇല്ലാതെ നമ്മുടെ ജീവിതം എന്തായിരിക്കും!

  8.   ലിസ്ബെത്ത് ഒല്ലാർവ്സ് പറഞ്ഞു

    നന്ദി, ഇത് വളരെ സഹായകരമായിരുന്നു.

  9.   പെർണി പറഞ്ഞു

    ഹലോ, ഒരേ കമാൻഡിലെ ഒരു ഫയലിൽ നിന്ന് 1,4, 10 വരികൾ എങ്ങനെ ഇല്ലാതാക്കാൻ കഴിയും?