gpt4 book ai didi

bash - Grep $value `grep $value2 ` `` - 嵌套 grep?

转载 作者:行者123 更新时间:2023-11-29 09:26:15 28 4
gpt4 key购买 nike

我是 awk/sed 的完全菜鸟,所以如果我在这里遗漏了一些明显的东西,请原谅我。

基本上我正在尝试做一个嵌套的 grep,即类似于:

grep $value `exim -Mvh $(`exim -bpru | grep $eximID | more`)`

分割:

grep $value IN COMMAND 
--> exim -Mvh (print exim mail headers) FROM RESULTS OF
---> exim -bpru | grep $eximID | more
  • $value 就是我要找的字符串
  • $eximID 是我在 exim -bpru 中寻找的字符串(列出所有 exim 东西)

不知道使用 awk/sed 是否可以更轻松地完成我想要完成的工作,因此这个问题确实存在。

试着让它尽可能清晰,但是嵌套很难哟

编辑多田!多亏了你们,我的脚本现在可以运行了!在这里,未完成,但工作:

#!/usr/bin/bash

echo "Enter the email address you want to search for + compare sender info via exim IDs."
read searchTarget
echo "Enter the target domain the email is coming from."
read searchDomain

#domanList is array for list of exim IDs needed
domainList=($(exim -bpru | grep "$searchDomain" | awk '{ print $3 }'))


for i in "${domainList[@]}"
do
echo "$(exim -Mvh $i | grep $searchTarget)"
#echo "$(grep $searchTarget $(exim -Mvh $i))"
done

最佳答案

grep $value `exim -Mvh $(`exim -bpru | grep $eximID | more`)`

这是不对的。反引号 (`command`) 和 $(command) 做同样的事情,它只是一种替代语法。使用 $() 的优点是它的嵌套性更好,因此始终使用它是一个好习惯。

所以,让我们解决这个问题,我们现在得到:

grep "$value" "$(exim -Mvh "$(exim -bpru | grep "$eximID")")" | more

我重新定位了 more 命令,我认为原因很明显。 more 只是为用户分页数据,将 more 的输出提供给其他几乎没有意义的东西。

我也引用了变量,这也是一个好习惯,否则当你的变量中有某些字符(最常见的是空格)时,事情会崩溃。

我无法测试这是否为您提供了您想要的输出,如果没有,则使用几行示例数据和预期输出更新您的答案。

关于bash - Grep $value `grep $value2 ` <command >`` - 嵌套 grep?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21949194/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com