我正在尝试使用一个 shell 脚本,该脚本将包含针对文件运行的"awk"


read -p "Enter the name for the dealer you are searching for: " dealer
read -p "Enter the time of day you are checking for this dealer: " time
echo "$time $dealer" | awk '/$1/'

这就是我目前所拥有的。根据我目前了解到的内容,这将把用户输入的值存储在dealertime中。

我接下来要做的是echo,它根据一系列命令进行输入,以查看文件是否包含这些输入。

例如轮盘赌交易商";Billy"在";05AM";每隔一天。为了查看给定日期的数据是否包含他的工作日志,我会运行这个脚本。

./script

运行文件:

输入您正在搜索的经销商的名称:Billy

输入您为该经销商检查的时间:05

现在我正在这里寻找解决方案。当我调用脚本时,我会针对文件运行脚本吗?我是否让用户输入文件作为第三个参数,然后将其作为脚本中的值?

如果我学习正确,则经销商将存储为arg1,并可通过$1访问,时间为$2。

那么我会运行:awk '1$.2$' file吗?

这意味着它们之间可以有任何东西,但如果一行确实包含名称和时间,那么这就是我要搜索的。

05:00:00AM凯蒂·比恩·比利·琼斯·埃瓦林·豪厄尔

这是我的脚本所需的输出,我知道时间是第一位的,所以我会做出相应的调整,但我正在努力更进一步。

从标准输入中读取经销商的输入和时间后,您可以使用以下regex运行awk

"^$time.*$dealer"

以匹配文件中的行。(你可能需要调整它以适应你的需求,尽管这应该是一个足够的起点(。

至于文件本身,awk可以从标准输入中读取,因此您可以将文件重定向到脚本,如下所示:

./script < data.txt

并像这样运行awk

awk -v re="^$time.*$dealer" '$0 ~ re { print $0 }'

使得CCD_ 8将从标准输入读取文件内容。

或者,您可以提供文件名作为参数,如下所示:

./script data.txt

并像这样运行awk

awk -v re="^$time.*$dealer" '$0 ~ re { print $0 }' "$1"

其中$1是文件名。

您还可以使用对grep的等效调用(在本例中更简洁!(:

grep "^$time.*$dealer" "$1"

相关内容

  • 没有找到相关文章

最新更新