用 bash 总结

summarize with bash

我在 SQL 获得了一些数据。我需要总结 bash 没有 sql.

abc=`sudo -u postgres psql admin -t -c "select * from table"`
echo "$abc"
A
B
C
D

dt=`sudo -u postgres psql admin -t -c "slecet * from table"`
echo "$dt"
1
2
3
4

还有包含的文件

1/x
1/y
2/y
2/z
3/z
4/x
4/y
4/z

我想这样输出:

1 A | x, y
2 B | x, z
3 C | z
4 D | x, y, z

我尝试了一些代码,但总是失败

paste -s -d <(echo "$dt" | while read n; do echo -n " ";done) <(echo "$abc";done ) <(echo find .././ ;done)

A
x
y
z
B
x
y
z
C
x
y
z
D
1
2
3
4
so on..

您可以自由提问,如果您需要更多info/details请询问。

使用 GNU awk 并期望数据在文件中(file1abc 数据,file2 dt):

$ gawk '
ARGIND==1 {                                    # process abc data
    a[FNR]=[=10=]                                  # hash to a
    n++                                        # abc and dt expected to have
    next                                       # same number of records
}
ARGIND==2 {                                    # process dt data
    b[FNR]=[=10=]                                  # hash to b
    next
}
split([=10=],t,/\//) {                             # process the third set
    c[t[1]]=c[t[1]] (c[t[1]]==""?"":", ") t[2] # hash to c appending
}
END {                                          # in the end
    for(i=1;i<=n;i++)                          # n is used
        printf "%s %s | %s\n",b[i],a[i],c[i]   # output
}' file1 file2 file3

输出:

1 A | x, y
2 B | y, z
3 C | z
4 D | x, y, z

如果这是一个连续的事情,您可能想查看 GNU awk 的 pgsql 扩展。