首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有可变数量的子subshell的Bash子subshell输入

具有可变数量的子subshell的Bash子subshell输入
EN

Stack Overflow用户
提问于 2018-08-07 03:03:29
回答 2查看 128关注 0票数 0

我想从数量可变的日志文件中提取grep行,并将它们的输出与paste连接起来。如果我有一个固定数量的输出,我可以这样做:

代码语言:javascript
复制
paste <(grep $PATTERN $FILE1) <(grep $PATTERN $FILE2)

但是,有没有一种方法可以在输入文件数量可变的情况下做到这一点?我想写一个shell脚本,它的参数是输入文件。shell脚本应该对所有这些行执行paste操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-07 03:22:05

使用显式命名管道,而不是进程替换。

代码语言:javascript
复制
pipes=()
for f in "$FILE1" "$FILE2" "$FILE3"; do
    n="$(mktemp)"  # Or some other command to create a temporary name
    mkfifo "$n"
    pipes+=( "$n" )
    grep "$PATTERN" "$f" > "$n" &
done

paste "${pipes[@]}"
rm  "${pipes[@]}"   # When done with them
票数 0
EN

Stack Overflow用户

发布于 2018-08-07 03:15:10

为此,您可以组合使用find命令列出文件,并使用xargs将其输出通过管道传输到grep,以确保在find命令中列出的每个文件上都应用了grep

代码语言:javascript
复制
$ find /dir/containing/files -name "file.*" | xargs grep $PATTERN
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51714096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档