GNU/Linux >> Znalost Linux >  >> Linux

předání grepu do proměnné v bash

Co se děje, je toto:

var2=$("$var1" | (grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b'))
       ^^^^^^^ Execute the program named (what is in variable var1).

Musíte udělat něco takového:

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

nebo dokonce

var2=$(awk 'NR==2' $file | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

Myslím si, že je to příliš komplikovaný způsob, jak postupovat, ale pokud chcete, aby váš skript fungoval, zkuste toto:

#!/bin/bash

file="email.txt"

var1=$(awk 'NR==2' $file)

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

echo $var2

Nejsem si jistý, co file=$(myscript) měl dělat, ale na dalším řádku chcete jako argument název souboru awk , takže byste měli přiřadit pouze email.txt jako hodnotu řetězce na file , neprovádět příkaz s názvem myscript . $var1 není příkaz (je to jen řádek z vašeho textového souboru), takže musíte echo to dá grep cokoliv užitečného pro práci. Další závorky kolem grep jsou nadbytečné.


Linux
  1. Bash skriptování (I)

  2. Bash Dynamické (proměnné) názvy proměnných?

  3. Chtěl bych uložit všechny argumenty příkazového řádku do skriptu Bash do jedné proměnné

  1. Alias ​​s proměnnou v bash

  2. Automaticky zachytit výstup posledního příkazu do proměnné pomocí Bash?

  3. Bash zachycující výstup awk do pole

  1. bash:vložte soubory seznamu do proměnné a velikost pole je 1

  2. Jak odstranit proměnnou pouze pro čtení v bash?

  3. bash - shoda proměnné bez ohledu na velikost písmen