Sed ஐப் பயன்படுத்தி ஒரு கோப்பிலிருந்து குறிப்பிட்ட வரிகளை எவ்வாறு நீக்குவது

சில சந்தர்ப்பங்களில் நாம் ஒரு குறிப்பிட்ட வரியை ஒரு கோப்பிலிருந்து அல்லது பலவற்றிலிருந்து நீக்க வேண்டும், எடுத்துக்காட்டாக, நான் கோப்புகளின் முழு பட்டியலையும் வைத்திருக்கிறேன், இவை அனைத்திலும் # 27 வது வரியை நீக்க வேண்டும் (வரி # 27 என்பது ஒரு ACL, நெறி, விதி, உள்ளமைவு), நான் கோப்பு மூலம் கோப்பைத் திருத்தலாம் அல்லது கட்டளையைப் பயன்படுத்தி எனக்குத் தேவையானதை அடைய முடியும் ஆனால் மற்றும் ஒரு பாஷ் ஸ்கிரிப்ட் (விரும்பினால்).

ஆனால், ஒரு கோப்பை ஓரளவு எளிமையாக முயற்சிப்போம்.

எங்களிடம் கோப்பு உள்ளது distros-deb.txt இதில் இது உள்ளது:

டெபியன்

எதிர்வரும்

archlinux

கரைசல்கள்

புதினா

அதாவது கோப்பு distros-deb.txt டெபியன் அடிப்படையிலான டிஸ்ட்ரோக்களை எங்கே வைப்போம், ஆனால் அங்கு # 3 வரிசையில் "ஆர்ச்லினக்ஸ்", டெபியனுடன் வெளிப்படையாக எந்த தொடர்பும் இல்லாத ஒரு டிஸ்ட்ரோ என்பதைக் காண்கிறோம், எனவே அந்த வரியை நாம் அகற்ற வேண்டும். அந்த கோப்பின் # 3 வரியை அகற்ற நாம் பின்வருவனவற்றை வைப்போம்:

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

இந்த வரியை விளக்குவது ஓரளவு எளிதானது தாகம் "3 டி" # 3 வரியை நீக்குவோம் என்பதைக் குறிக்கிறோம் distros-deb.txt எந்தக் கோப்பில் வேலை செய்ய வேண்டும் என்பதைக் குறிக்கிறோம், அதாவது, இந்த கோப்பின் # 3 வது வரியை நீக்கு, இங்கே வரை நாம் Enter ஐ அழுத்தினால் அது நமக்கு என்ன வேண்டும் என்பதைக் காண்பிக்கும், ஆனால் முனையத்தில், எனவே > distros-deb-ok.txt முடிவை முனையத்தில் காண்பிப்பதற்கு பதிலாக, இந்த பெயருடன் ஒரு கோப்பில் வைப்பதை நாங்கள் குறிக்கிறோம்.

எளிமையானது என்ன?

மேலும், நாம் பயன்படுத்துவதைத் தவிர்க்கலாம் > distros-deb-ok.txt இன் சரியான அளவுருவைப் பயன்படுத்துதல் ஆனால், அளவுரு -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

இது எல்லாவற்றையும் கொண்டிருந்தது, பணிகளை தானியக்கமாக்குவதற்கு நீங்கள் பாஷ் ஸ்கிரிப்ட்களை உருவாக்க விரும்பும் போது மிகவும் பயனுள்ள உதவிக்குறிப்பு மற்றும் நாங்கள் பயன்படுத்தக்கூடிய மாற்றங்களை மாற்ற, உள்ளமைவு கோப்புகளின் வரிகளை மாற்றியமைத்து அகற்ற வேண்டும். ஆனால் o பேர்ல், அத்துடன் அதை அகற்றுவது ஏற்கனவே sed with உடன் எவ்வாறு செய்வது என்று எங்களுக்குத் தெரியும்

மேற்கோளிடு


16 கருத்துகள், உங்களுடையதை விடுங்கள்

உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.

  1.   mss-devel அவர் கூறினார்

    மிகச் சிறந்த பங்களிப்பு

    1.    KZKG ^ காரா அவர் கூறினார்

      நன்றி

      மூலம், இப்போது உங்கள் மின்னஞ்சலைப் பெற்றோம், நான் உங்களுக்கு பதிலளிக்கிறேன்

      மேற்கோளிடு

  2.   பெயரிடப்படாமலே அவர் கூறினார்

    முனையத்தின் உயர் பூசாரி, சேவையகங்கள் மற்றும் எஸ்.எஸ்.எஸ் இணைப்புகளை நான் உங்களிடம் வருகிறேன், ஓ பெரிய KZKG ^ காரா, நான் உங்களிடம் கேட்கிறேன்: எனது அறியாமையின் மட்டத்தில் ஒரு டுடோரியலை நான் எங்கே பெற முடியும், இது இரண்டு தொலை இயந்திரங்களுக்கு இடையில் ssh இணைப்புகளைப் பயன்படுத்த அனுமதிக்கிறது உரை கோப்புகள், பி.டி.எஃப், படம் மற்றும் ஒலி (எம்பி 3) ஆகியவற்றைப் பகிர வெவ்வேறு நெட்வொர்க்குகளில்….

    ????

    தீவிரமாக, இந்த விஷயத்தில் நீங்கள் எனக்கு வழிகாட்ட முடியுமா, எனக்கு இரண்டு இயந்திரங்கள் உள்ளன, ஒன்று வேலை மற்றும் வீட்டில் ஒன்று மற்றும் அவற்றுக்கிடையே எனக்கு ஒரு ssh இணைப்பு தேவை (ஏனென்றால் நான் புரிந்து கொண்டபடி, ssh இயந்திரங்களுக்கு இடையில் உள்ளடக்கத்தைப் பகிர அனுமதிக்கிறது, நான் சொல்வது சரிதானா? ).
    நான் தவறாக இருந்தால், நீங்கள் எந்த பயன்பாட்டை பரிந்துரைக்கிறீர்கள்?
    இது தொடர்பாக ஒரு அடிப்படை டுடோரியலை நான் எங்கே காணலாம்?

    1.    -ஸ்பைக்கர்- அவர் கூறினார்

      scp

      scp பயனர் @ machine_address: பாதை பயனர் @ machine_address: பாதை.

      சிபி, மூல -> இலக்கு என அதே தொடரியல்.

  3.   f3niX அவர் கூறினார்

    நீங்கள் மனிதனைக் காட்டினீர்கள், நீங்கள் தொலைந்துவிட்டீர்கள்.

  4.   ஜோகுயின் அவர் கூறினார்

    நல்ல உதவிக்குறிப்பு!

  5.   LycusHackerEmo அவர் கூறினார்

    சுவாரஸ்யமான உதவிக்குறிப்பு… xD

    தைரியமான உரையை வெளிப்படுத்தும் ஒன்றை நீங்கள் அறியவில்லையா?
    அதாவது, என்னிடம் ஒரு txt கோப்பு உள்ளது, அது ஒரு அகராதி, இது 10000 க்கும் மேற்பட்ட வரிகளைக் கொண்டுள்ளது மற்றும் ":" இடைநீக்க புள்ளிகளுக்கு முன் சில உரையை முன்னிலைப்படுத்த விரும்புகிறேன், அதை ஒவ்வொன்றாகச் செய்வது மிக அதிகம்.

    1.    KZKG ^ காரா அவர் கூறினார்

      , ஹலோ

      ஒரு txt கோப்பு என்பது எளிய உரை, பெயர் குறிப்பிடுவது போல ... வெற்று, வடிவங்கள் அல்லது அதற்கு ஒத்த எதுவும் இல்லாமல், மன்னிக்கவும், ஆனால் நீங்கள் கேட்பதைச் செய்ய முடியாது என்று நினைக்கிறேன், முடியுமா? 🙁

      மேற்கோளிடு

      1.    ஏசிஏ அவர் கூறினார்

        உண்மையில் அது முடியும், ஆனால் நீங்கள் இலக்கு வடிவமைப்பை அறிந்து கொள்ள வேண்டும்.
        எ.கா:
        எதிரொலி $ (எதிரொலி "ராபர்ட்: ஹலோ. இங்கே மாற்றவும்" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
        இது ஒரு விஷயம்.
        பயன்படுத்தக்கூடிய நீக்குவதற்கான வேறு வழி sed '/' $ 1 '/ d' ஆகும், ஆனால் நீங்கள் மறுபடியும் உறுதியாக இருக்க வேண்டும்.

        1.    LycusHackerEmo அவர் கூறினார்

          * .odt இல் சேமிப்பதை முடிக்கவும்

          லிப்ரே ஆபிஸுடன் இதைச் செய்ய எளிதான வழி இல்லையா?

  6.   Lolo அவர் கூறினார்

    ஒரு வரியின் ஒரு பகுதியை நீக்கி, மீதமுள்ளவற்றை விட்டுவிட முடியுமா?

    ஒரு குறிப்பிட்ட வரிசையில் ஒரு வார்த்தையின் முன்னால் உள்ள அனைத்தையும் நீக்க விரும்புகிறேன் என்று சொல்லலாம்.

    அல்லது அந்த வார்த்தையைப் பின்பற்றும் அனைத்தையும் நீக்கவும்.

    1.    ஏசிஏ அவர் கூறினார்

      ஆமாம், இது ஒரு ரீஜெக்ஸை இழுப்பது ஒரு விஷயம் (தேவைப்பட்டால் மனிதன் sed -r, –regexp- நீட்டிக்கப்பட்ட)
      நான் கண்டதிலிருந்து தொடங்குகிறது
      எதிரொலி «ராபர்ட்: வணக்கம். இங்கே மாற்றவும் »| sed 's / Change //'
      நன்கு வரையறுக்கப்பட்ட முறை மற்றும் உடன். (ஒரு எழுத்து) மற்றும் * (ஒன்றுக்கு மேற்பட்டவை)
      பின்னர்:
      எதிரொலி «ராபர்ட்: வணக்கம். இங்கே மாற்றவும் »| sed 's / Change. * //'
      முன்:
      எதிரொலி «ராபர்ட்: வணக்கம். இங்கே மாற்றவும் »| sed 's /. * மாற்று //'
      அந்த வார்த்தை தோன்றும் என்பது முக்கியம் என்றால்
      எதிரொலி «ராபர்ட்: வணக்கம். இங்கே மாற்றவும் »| sed 's / Change. * / Change /'
      அல்லது இன்னும் விரிவானது
      ராபர்ட் அடங்கிய வரியில் மாற்றத்திற்குப் பின் என்ன நடக்கிறது
      echo -e «Fritz: வணக்கம். இங்கே மாற்று \ n ராபர்ட்: வணக்கம். இங்கே மாற்றவும் »| sed '/Robert/s/Cambio.*//'
      அல்லது ஆரம்பத்தில் இரண்டாவது வரியை எடுத்து மீதமுள்ளவற்றை செயலாக்கவும்
      echo -e «Fritz: வணக்கம். இங்கே மாற்று \ n ராபர்ட்: வணக்கம். இங்கே மாற்றவும் \ n மற்ற »| sed -e 2d -e 'கள் / மாற்றம். * //'
      echo -e «Fritz: வணக்கம். இங்கே மாற்று \ n ராபர்ட்: வணக்கம். இங்கே மாற்றவும் \ n மற்ற »| sed '2d; s / Change. * //'

      1.    Lolo அவர் கூறினார்

        நன்றி, இது எனக்கு மிகவும் பயனுள்ளதாக இருக்கிறது.

  7.   msx அவர் கூறினார்

    நல்ல கட்டுரை, அதில் நான் விரும்புகிறேன், சிஸ்அட்மின் எவ்வளவு பெரியது!
    செட், பிரமிப்பு, பெர்ல், கிரெப், வால், தலை, "ஈமாக்ஸ்" மற்றும் பல அத்தியாவசிய கருவிகள் இல்லாமல் நம் வாழ்க்கை என்னவாக இருக்கும்!?

  8.   லிஸ்பெத் ஒல்லார்வ்ஸ் அவர் கூறினார்

    நன்றி, இது மிகவும் உதவியாக இருந்தது.

  9.   பெர்னி அவர் கூறினார்

    வணக்கம், அதே கட்டளையில் உள்ள கோப்பிலிருந்து 1,4 மற்றும் 10 வரிகளை எவ்வாறு நீக்க முடியும்?