Bash - Извлечь все URL-адреса, кроме определенных

У вас есть такое цитирование, что STDIN команды ssh передается с помощью findPassword. Вы хотите, чтобы STDIN команды sudo передавался с помощью findPassword.

ssh -p $ tunnel_port $ me @ localhost -t "echo $ (findPassword) | sudo -S -u $ _remoteUser -i"

или

ssh -p $ tunnel_port $ me @ localhost -t " sudo -S -u $ _remoteUser -i <$ (findPassword) "

0
08.03.2018, 04:35
2 ответа

El uso de grepcon la opción -vle brinda la posibilidad de seleccionar líneas que no coincidan con -. por ejemplo, dando un archivo file.txtcon este contenido:

first line
second line
third line
fourth text 

Uso de este comando:

grep "line" file.txt | grep -v "second"

El resultado será:

first line
third line

Si desea excluir varias palabras al mismo tiempo, puede usar una expresión regular como esa:

grep "line" file.txt | grep -vE "(second|first)"

El resultado será:

    third line

Después de la actualización de la pregunta:

Para este caso puedes usar cualquiera de estos métodos:

  1. grep 'http://www.yahoo' data.txt | sed 's/.*\(http:.*\)/\1/'
  2. grep 'http://' data.txt | sed 's/.*\(http:.*\)/\1/' | grep yahoo

La primera forma le dará solo www.yahoo.

El segundo le dará toda la URL que contiene yahoocomo palabra.

Para extraer todas las URL excepto algunas:

grep 'http://' data.txt | sed 's/.*\(http:.*\)/\1/' | grep -vE "(openxmlformats|<Another URL to exclude>)"
1
28.01.2020, 02:32

Creo que esto se puede hacer solo con sed:

sed -n '\,http://schemas.openxmlformats.org,!s/.*\(http:.*\).*/\1/p'
  • -ndesactiva la impresión automática de texto, por lo que solo se pueden imprimir las líneas seleccionadas.
  • \,http://schemas.openxmlformats.org,!ejecuta el siguiente comando solo en líneas que no coinciden con (, por lo tanto, !al final)http://schemas.openxmlformats.org. He usado ,en lugar de /como delimitador de expresiones regulares aquí, de ahí el \,al principio. Esto reduce la necesidad de escapar \en el patrón.
  • El comando ses el mismo que el suyo, pero utilizo pdespués para imprimir la línea, que ahora contiene solo la URL.

Asumo solo una URL por línea.

Eliminar la cita adicional me da la salida correctamente:

$ sed -n '\,http://schemas.openxmlformats.org,!s/.*\(http:.*\).*/\1/p' inpu-file
http://www.yahoo.com/
1
28.01.2020, 02:32

Теги

Похожие вопросы