Linux grep两个字符串作为脚本中使用的变量

Linux grep两个字符串作为脚本中使用的变量,linux,Linux,请您帮助我如何grep并使用下面提到的字符串作为相关文件.txt第3行的变量 file.txt line1: some words with 123@domain.com line2: some words line3: path = /aaa/bbb/domain.com/user@domain.com/ccc/123@test.com/ 所以我需要grep“user@domain.com“和”123@test“在第3行用作脚本中的变量,如 #!/bin/bash var1 = so

请您帮助我如何grep并使用下面提到的字符串作为相关文件.txt第3行的变量

file.txt

line1:  some words with 123@domain.com
line2:  some words 
line3:  path = /aaa/bbb/domain.com/user@domain.com/ccc/123@test.com/
所以我需要grep“user@domain.com“和”123@test“在第3行用作脚本中的变量,如

#!/bin/bash
var1 = some_code result as "user@domain.com"
var2 = some_code result as "123@test"
run_a_command  $var1  $var2

提前感谢,

如果文件格式与您显示的格式相同,则您可以执行以下操作:

arr=($(awk -F'/' '/path/{print $5,$7}' file)) # Extract the desired 2 fields

arr[1]=${arr[1]%\.com} # Remove the suffix ".com"

run_a_command ${a[0]} ${a[1]}
根据文件内容,您可能还需要调整要提取的
awk
零件。如果可能的话,还可以检查一个或两个数组元素是否为空。如果总是第三行,那么可以使用
NR==3
检查awk模式匹配部分:
arr=($(awk-F'/''NR==3&&/path/{print$5,$7}'文件))

如果输入文件具有更复杂的格式(例如,如果输入文件中有多行这样的行等),则应更新问题,因为任何解决方案都取决于此。

关于:

grep -o -E '\/[^\/]+@[^\/\.]+' INFILE | sed "s/\///g"
也许以下就是你想要的

grep -o -E '\/[^\/]+@[^\/]+(\/|$)' INFILE | sed "s/\///g"

那很好,但我需要字符串分开。