gpt4 book ai didi

unix - 将一个命令的输出作为参数传递给另一个

转载 作者:行者123 更新时间:2023-12-04 06:42:57 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to pass command output as multiple arguments to another command

(5 个回答)


3年前关闭。




我有这个:

for i in `ls -1 access.log*`; do tail $i |awk {'print $4'} |cut -d: -f 1 |grep - $i > $i.output; done

ls 将提供 access.log、access.log.1、access.log.2 等。
尾部会给我每个文件的最后一行,看起来像: 192.168.1.23 - - [08/Oct/2010:14:05:04 +0300]等等等等等等
awk+cut 将提取日期(08/Oct/2010 - 但在每个 access.log 中不同),这将允许我 grep 并将输出重定向到一个单独的文件。

但我似乎无法将 awk+cut 的输出传递给 grep。

所有这一切的原因是那些访问日志包括具有多个日期的行(06/Oct、07/Oct、08/Oct),而我只需要具有最近日期的行。

我怎样才能做到这一点?

谢谢你。

最佳答案

作为旁注,tail显示最后 10 行。

一个可能的解决方案是 grep这边走:

for i in `ls -lf access.log*`; do grep $(tail $i |awk {'print $4'} |cut -d: -f 1| sed 's/\[/\\[/') $i > $i.output; done

关于unix - 将一个命令的输出作为参数传递给另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023151/

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