Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

213
Views
¿Cómo puedo generar solo un grupo de captura con sed?

tengo un archivo de entrada

 Werkzeug==2.0.2 # https://github.com/pallets/werkzeug ipdb==0.13.9 # https://github.com/gotcha/ipdb psycopg2==2.9.1 # https://github.com/psycopg/psycopg2 watchgod==0.7 # https://github.com/samuelcolvin/watchgod # Testing # ------------------------------------------------------------------------------ mypy==0.910 # https://github.com/python/mypy django-stubs==1.8.0 # https://github.com/typeddjango/django-stubs pytest==6.2.5 # https://github.com/pytest-dev/pytest pytest-sugar==0.9.4 # https://github.com/Frozenball/pytest-sugar djangorestframework-stubs==1.4.0 # https://github.com/typeddjango/djangorestframework-stubs # Documentation # ------------------------------------------------------------------------------ sphinx==4.2.0 # https://github.com/sphinx-doc/sphinx sphinx-autobuild==2021.3.14 # https://github.com/GaretJax/sphinx-autobuild # Code quality # ------------------------------------------------------------------------------ flake8==3.9.2 # https://github.com/PyCQA/flake8 flake8-isort==4.0.0 # https://github.com/gforcada/flake8-isort coverage==6.0.2 # https://github.com/nedbat/coveragepy black==21.9b0 # https://github.com/psf/black pylint-django==2.4.4 # https://github.com/PyCQA/pylint-django pylint-celery==0.3 # https://github.com/PyCQA/pylint-celery pre-commit==2.15.0 # https://github.com/pre-commit/pre-commit # Django # ------------------------------------------------------------------------------ factory-boy==3.2.0 # https://github.com/FactoryBoy/factory_boy django-debug-toolbar==3.2.2 # https://github.com/jazzband/django-debug-toolbar django-extensions==3.1.3 # https://github.com/django-extensions/django-extensions django-coverage-plugin==2.0.1 # https://github.com/nedbat/django_coverage_plugin pytest-django==4.4.0 # https://github.com/pytest-dev/pytest-django

y estoy tratando de extraer las partes antes del # para cada línea que comienza con pytest usando este comando

sed -nE "s/(^pytest.+)#/\1/p" ./requirements/local.txt

Rendimiento esperado

 pytest==6.2.5 pytest-sugar==0.9.4 pytest-django==4.4.0

Salida real

 pytest==6.2.5 https://github.com/pytest-dev/pytest pytest-sugar==0.9.4 https://github.com/Frozenball/pytest-sugar pytest-django==4.4.0 https://github.com/pytest-dev/pytest-django

¿Alguna ayuda para conseguir lo esperado?

Estos árbitros no han ayudado a resolver este problema en particular.

  • ¿Cómo puedo generar solo grupos capturados con sed?
  • sed con grupo de captura
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Usando sed :

 sed -nE 's/^(pytest[^=]*=[^[:blank:]]*).*/\1/p' file pytest==6.2.5 pytest-sugar==0.9.4 pytest-django==4.4.0

Sin embargo, una solución grep -o sería aún más simple:

 grep -o '^pytest[^=]*=[^[:blank:]]*' file pytest==6.2.5 pytest-sugar==0.9.4 pytest-django==4.4.0

Explicación:

  • ^pytest : coincide con pytest al principio
  • [^=]* : coincide con 0 o más de cualquier carácter excepto =
  • = : Coincide con un =
  • [^[:blank:]]* : coincide con 0 o más caracteres que no sean espacios en blanco
over 4 years ago · Santiago Trujillo Report

0

Te falta la expresión regular después de # . Esto debería resolverlo:

 $ sed -nE "s/(^pytest.+)#.*/\1/p" ./requirements/local.txt
over 4 years ago · Santiago Trujillo Report

0

Primera solución: con awk podría intentar seguir. Usando la función de match de awk aquí, escrita y probada en GNU, awk debería funcionar en cualquiera. La explicación simple sería usar la función de match de awk para hacer coincidir la expresión regular ^pytest[^ ]* para hacer coincidir el valor inicial de pytest hasta la primera aparición de espacio e imprimir el valor coincidente usando la función substr de awk .

 awk 'match($0,/^pytest[^ ]*/){print substr($0,RSTART,RLENGTH)}' Input_file

Segunda solución: usando GNU awk , intente seguir donde hacer uso de la variable RS .

 awk -v RS='(^|\n)pytest[^ ]*' 'RT{sub(/^\n*/,"",RT);print RT}' Input_file
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!