கோப்புகளுக்குள் உரையை ஒரே கட்டளையுடன் மாற்றவும்: perl

சில சந்தர்ப்பங்களில், ஒரு கோப்பிற்குள் உரையை மாற்ற விரும்புகிறோம், எடுத்துக்காட்டாக, மாற்றவும் Document.txt "என் குடும்பம்" "எங்களுக்கு" என்று சொல்லும் அனைத்தும். இதை அடைய நாம் விரும்பும் உரை திருத்தியை (கேட், கெடிட், சப்ளைம் டெக்ஸ்ட் போன்றவை) பயன்படுத்தலாம், ஆனால் மாறுபாடுகளை அறிந்து கொள்வது எப்போதும் நல்லது, அதே முடிவை அடைய பிற வழிகள்

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

உதாரணத்தைத் தொடர்ந்து, எங்களிடம் கோப்பு உள்ளது Document.txt அமைந்துள்ளது OM HOME / Document.txt பின்வரும் உரையுடன்:

(...) என் குடும்பம் இது உங்களுடையது அல்லது உங்கள் அண்டை வீட்டாரைப் போன்றது. உண்மையாக என் குடும்பம் அரசியல் மற்றும் சமூக ரீதியாக சரியானவர்களாக நாங்கள் பொறுப்புள்ளவர்களாகவும் சமூகத்தின் பார்வையில் இருக்கவும் முயற்சிக்கிறோம். இருப்பினும், என் வீட்டில் ஒரு கருப்பு ஆடு இருக்கிறது, அதுதான் என் பங்கு LOL!. அவர் என்ன நினைக்கிறார் என்று சொல்ல அஞ்சாதவர் நான் எப்போதும் (சமூகத்தின் பார்வையில் அது சரியாக இல்லாவிட்டாலும் கூட), உண்மையில் என் குடும்பம் அழுக்கு இன்றைய சமூகம்.

பின்வரும் கட்டளையுடன் நீங்கள் மாற்றுவீர்கள் «என் குடும்பம்"by"எங்களுக்கு":

perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt

இது மிகவும் எளிது

எனவே உரை பின்வருமாறு:

(...) எங்களுக்கு இது உங்களுடையது அல்லது உங்கள் அண்டை வீட்டாரைப் போன்றது. உண்மையாக எங்களுக்கு அரசியல் மற்றும் சமூக ரீதியாக சரியானவர்களாக நாங்கள் பொறுப்புள்ளவர்களாகவும் சமூகத்தின் பார்வையில் இருக்கவும் முயற்சிக்கிறோம். இருப்பினும், என் வீட்டில் ஒரு கருப்பு ஆடு இருக்கிறது, அதுதான் என் பங்கு LOL!. அவர் என்ன நினைக்கிறார் என்று சொல்ல அஞ்சாதவர் நான் எப்போதும் (சமூகத்தின் பார்வையில் அது சரியாக இல்லாவிட்டாலும் கூட), உண்மையில் என் குடும்பம் அழுக்கு இன்றைய சமூகம்.

தொடரியல்:

perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar

கட்டளை சற்று சிக்கலானதாகத் தோன்றலாம், அதை சற்று உடைத்து இன்னும் கொஞ்சம் எளிமையாக விளக்குவோம்

  • பேர்ல் : நாம் என்ன பயன்படுத்துவோம், perl
  • -பி : Pí, எப்படி π (தோராயமான மதிப்பு 3.14)
  • -e : E அதை இயக்க «கற்பனை செய்ய» ^ - ^
  • பின்னர் மேற்கோள்களில் » நாங்கள் ஒரு திறக்கிறோம் s நாம் ஒரு உடன் மூடுகிறோம் g: "sg" … தொடக்கத்திற்கான எஸ் மற்றும் விளையாட்டுக்கான ஜி ஐ கற்பனை செய்து பாருங்கள்
  • இடையே திரும்பவும் sg நாம் இரண்டு செட் அடைப்புக்குறிகளை வைக்க வேண்டும்: [] y [], அந்த வழியில் இருப்பது: "எஸ் [] [] கிராம்"
  • நான் மேலே சொன்னது போல முதல் அடைப்புக்குறிக்குள், புதிய ஒன்றை அகற்றி மாற்ற விரும்பும் உரை செல்லும், அதே நேரத்தில் இரண்டாவது அடைப்புக்குறிக்குள் புதிய உரை வைக்கப்படும், உதாரணத்தைப் பின்பற்றி: "எஸ் [என் குடும்பம்] [நாங்கள்] ஜி"

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

விளக்கம் உண்மையில் கட்டளைக்கு தேவையானதை விட மிகவும் விரிவானது, புரிந்து கொள்வது மிகவும் எளிது

பெர்ல் என்பது உரையை மாற்றுவதற்கான வழியை விட அதிகம், இது முழு மொழியாகும்

நீங்கள் இதைப் பற்றி மேலும் அறிய விரும்பினால், தொகுப்பை நிறுவவும் perl-doc அது எதை அனுமதிக்கிறது என்பதைப் பாருங்கள், இது வேறுபட்ட பிரபஞ்சம்.

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

find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;

அல்லது வைல்டு கார்டைப் பயன்படுத்துதல்:

perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt

இந்த இரண்டாவது மாறுபாட்டின் சிக்கல் என்னவென்றால், அது துணை கோப்புறைகளில் உள்ள கோப்புகளில் மாற்றப்படாது

எப்படியிருந்தாலும், நீங்கள் அதை சுவாரஸ்யமாகக் கண்டீர்கள் என்று நம்புகிறேன். என்னைப் பொறுத்தவரை இது மிகவும் பயனுள்ளதாக இருந்தது, நான் ஏற்கனவே முனையத்திலிருந்து நேரடியாக உரையை மாற்ற முடியும் ... அருமை! 😀


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

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

*

*

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

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

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

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

      உங்கள் கருத்துக்கு நன்றி,
      இரண்டு விவரங்கள், செட் அதை சிறப்பாக செய்கிறது என்று ஏன் சொல்கிறீர்கள்? பல 'வித்தியாசமான' எழுத்துக்களுடன் பயன்படுத்துவது உண்மையில் எளிதானதா?

  2.   ஃபெடரிகோ ஏ. வால்டெஸ் டூஜாக் அவர் கூறினார்

    எல்லோருக்கும் வாழ்த்துக்கள்!!!. நான் கட்டளையைப் பயன்படுத்தினேன் ஆனால், மற்றும் பெர்லுடன் இங்கே விவரிக்கப்பட்டுள்ள முறை எளிதானது. நன்றி KZKG ^ காரா !!!.

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

      கருத்துக்கு நன்றி
      சரி, குறைந்த பட்சம் இது வழக்கமான வெளிப்பாடுகளை விட எளிமையானது என்று எனக்குத் தோன்றுகிறது ... பல 'வித்தியாசமான' கதாபாத்திரங்களைக் கொண்டு, புரிந்துகொள்வதற்கும் கற்றுக்கொள்வதற்கும் மிகவும் சிக்கலான ஒன்றை ஆர்வமுள்ளவர்களுக்கு செய்ய முடியும்.

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

        அங்கே ஒரு «பழைய» பழமொழி உள்ளது: «எனக்கு ஒரு சிக்கல் இருந்தது, வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்த முடிவு செய்தேன் ... இப்போது எனக்கு இரண்டு சிக்கல்கள் உள்ளன 😉

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

          ஹஹாஹாஹாஹாஹா !!!
          வழக்கமான வெளிப்பாடுகள் ஒரு குறிப்பிட்ட கட்டத்தில் நம் உயிரைக் காப்பாற்றும் ... ஆம், அவற்றை எவ்வாறு பயன்படுத்துவது என்பதை அறிய நீண்ட நேரம் எடுக்கும், முயற்சி செய்யாமல் இறந்து விடக்கூடாது.

          இந்த கட்டளையை நான் பல ஆண்டுகளுக்கு முன்பு அறிந்திருந்தால், கடவுள் !! என் வாழ்க்கை எவ்வளவு எளிமையாக இருந்திருக்கும்

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

            தெளிவு! நன்கு கையாளப்பட்டவை அவை மிகவும் சக்திவாய்ந்தவை text உரையை கையாள சிறந்தது எதுவுமில்லை. ஆனால் சில நேரங்களில், பெர்லுடன் இந்த விஷயத்தில் நீங்கள் சொல்வது போல், ஒரு மாற்று போதுமானதாக இருந்தால் நீங்கள் அவ்வளவு தூரம் செல்ல வேண்டியதில்லை.
            நான் எப்படியும் பைத்தானைப் பயன்படுத்தியிருப்பேன் :)

    2.    வேட்டைக்காரன் அவர் கூறினார்

      ஆனால் தாகத்தில் நான் அதை இன்னும் எளிமையாகக் காண்கிறேன் ... நான் ஏதாவது தவறு செய்கிறேனா?

      sed -i "if / what-I-want-to change / new-to-put /" file-in-which-to-replace

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

        ஹே ஹே ... மேலும் நான் "http://my.blog.com/content/" ஐ "http://my.blog.com/uploads/files/" உடன் மாற்ற விரும்பினால் ... ஏற்கனவே அங்கே நீங்கள் இடங்கள் மற்றும் பிறவற்றை வைக்க வேண்டும் , அது சிக்கலானதா இல்லையா?

        1.    வேட்டைக்காரன் அவர் கூறினார்

          ஒரு பிரிப்பானாக / பயன்படுத்துவது கட்டாயமில்லை. + உடன் பாருங்கள்

          sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» கோப்பு

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

            O_O… WTF!
            எனக்கான விருப்பங்களின் முழு பிரபஞ்சத்தையும் இப்போது திறந்துவிட்டீர்கள் .. O_O

          2.    கிஸ்கார்ட் அவர் கூறினார்

            நாம் அனைவரும் ஏதாவது கற்றுக் கொள்ளும் இந்த இடுகைகளை நான் விரும்புகிறேன்
            அதுவும் எனக்குத் தெரியாது.

  3.   ரா-அடிப்படை அவர் கூறினார்

    நான் நேரடியாக vi ஐப் பயன்படுத்த விரும்புகிறேன் ..

    இது போன்ற எளிமையானது:
    :% s / us / my family / g

    % -> முழு ஆவணம்
    s -> தேடல்
    g -> எல்லா நிகழ்வுகளும்

    வாழ்த்துக்கள் ..

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

      நன்றி!
      Vi உடன் இதை எப்படி செய்வது என்று எனக்குத் தெரியவில்லை

  4.   st0rmt4il அவர் கூறினார்

    பிடித்தவையில் சேர்க்கப்பட்டது!

    நன்றி!

  5.   n3 புயல் அவர் கூறினார்

    உங்களிடம் rpl கட்டளை கொஞ்சம் இருந்தால் அதைப் பாருங்கள்

    http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/

  6.   டுரான்ஜி அவர் கூறினார்

    சிறந்த நுழைவு! யாராவது ஆர்வமாக இருந்தால், லினக்ஸ் செட் கட்டளையைப் போலவே: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html

    1.    சந்தேகம் அவர் கூறினார்

      கோப்பில் நான் மாற்ற விரும்புவது மேற்கோள்களைக் கொண்டிருந்தால் என்ன ஆகும்?
      எடுத்துக்காட்டு உரையை மாற்றுவதை மாற்றுகிறது: text 1 text உரை மூலம்: »2
      கட்டளை எப்படி இருக்கும்?

  7.   பெர்சி சல்கடோ அவர் கூறினார்

    ஹோலா

    நடுவில் @ இருந்த ஒரு சரத்தை மாற்ற விரும்பினேன், அதற்கு முன் உரையை மட்டுமே மாற்றினேன்.

    மாற்ற உரை: பெரு நீண்ட காலம் வாழ்க
    புதிய உரை: விவா மை பேட்ரியா @percysalgado
    காட்டப்பட்டது: என் தாயகத்தை நீண்ட காலம் வாழ்க

    உங்கள் உதவிக்கு நன்றி

  8.   அநாமதேய அவர் கூறினார்

    "\" இரட்டை பயன்பாடு @, # கொண்ட எழுத்துக்களுக்கு முன் நீங்கள் ஸ்லாஷைப் பயன்படுத்த வேண்டும், இதனால் அவை உரையாக விளக்கப்படுகின்றன.

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

    ஜன்னல்களில் இதை எப்படி செய்வது ????