将单独的Bash greps放入列中?

时间:2014-12-09 23:17:45

标签: awk

从主目录(包含几个子目录),我想要cd到以* bk结尾的所有目录,并做三件事:

$1 = ls *enp
$2 = grep "Start time" *initial.rpt
$3 = grep "Stop time" *ending.rpt

我希望输出组合在同一行上的所有3个组件:

1. Bill.enp    12:00    14:30
2. Barb.enp    15:00    15:30
3. Brad.enp    16:00    17:30
4. Buck.enp    18:00    19:00
5. Burt.enp    19:30    21:00

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

使用这些值,您需要paste命令。

如果这些文件分为三个文件:paste out1 out2 out3

如果这些变量有三个变量:paste <(echo "$s1") <(echo "$s2") <(echo "$s3")

答案 1 :(得分:0)

Iff命令

ls *enp
grep "Start time" *initial.rpt
grep "Stop time" *ending.rpt

所有这些都给予相同数量的行,并且行总是按照正确的顺序排列,您可以使用以下脚本(归功于Etan Reisner,原始提及process substitution

for d in *.bk ; do
  if [ -d $d ] ; then
    cd $d
    paste -d\\t <(ls *enp) <(grep "Start time" *initial.rpt) <(grep "Stop time" *ending.rpt)
    cd -
 done

我使用制表符作为paste命令的分隔符,默认为空格。