GNU/Linux >> Belajar Linux >  >> Linux

meneruskan grep ke dalam variabel di bash

Apa yang terjadi adalah ini:

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).

Anda perlu melakukan sesuatu seperti ini:

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

atau bahkan

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

Saya pikir ini adalah cara yang terlalu rumit untuk melakukan berbagai hal, tetapi jika Anda hanya ingin skrip Anda berfungsi, coba ini:

#!/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

Saya tidak yakin apa file=$(myscript) seharusnya dilakukan, tetapi pada baris berikutnya Anda menginginkan nama file sebagai argumen untuk awk , jadi Anda hanya perlu menetapkan email.txt sebagai nilai string ke file , bukan menjalankan perintah yang disebut myscript . $var1 bukan perintah (itu hanya satu baris dari file teks Anda), jadi Anda harus echo untuk memberikan grep sesuatu yang berguna untuk dikerjakan. Tanda kurung tambahan di sekitar grep berlebihan.


Linux
  1. Nama Variabel Bash Dinamis (variabel)?

  2. dasar-dasar grep

  3. Saya ingin menyimpan semua argumen baris perintah ke skrip Bash ke dalam satu variabel

  1. Periksa apakah ada variabel dalam daftar di Bash

  2. Bash menangkap output dari awk ke dalam array

  3. bash:masukkan file daftar ke dalam variabel dan tetapi ukuran array adalah 1

  1. Skrip bash(I)

  2. bash - pencocokan variabel case-insensitive

  3. Redirect output dari perintah waktu di unix ke dalam variabel di bash?