Linux 用bash总结
我有一些通过SQL获取的数据。我需要总结一下没有sql的bashLinux 用bash总结,linux,bash,echo,Linux,Bash,Echo,我有一些通过SQL获取的数据。我需要总结一下没有sql的bash 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
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..
paste-s-d使用GNU awk并期望数据在文件中(file1
是abc
数据,file2
是dt
):
如果这是一个连续的问题,您可能需要检查GNU awk的pgsql扩展。使用GNU awk并希望数据位于文件中(file1
是abc
数据,file2
是dt
):
如果这是一个连续的问题,您可能需要查看GNU awk的pgsql扩展。在数据库中进行汇总可能更容易,但您特别需要一个bash解决方案。我删除了SQL标记。@ÖmerTahaCam:将数据存储到数组中而不是使用字符串标量不是更有意义吗?您在处理阵列时更加灵活。谢谢@GordonLinoff@user1934428是的,使用数组更有意义。但无法将它们转换为数组。我尝试了IFS来转换数组。我的场景是这样的。readarray
是转换为数组的合适工具,假设有bash 4.0或更新版本。在旧版本的bash中,可以使用read-a
。请参阅为什么在不适当的情况下使用array=($value)
在IFS上拆分。在数据库中进行汇总可能更容易,但您特别需要一个bash解决方案。我删除了SQL标记。@ÖmerTahaCam:将数据存储到数组中而不是使用字符串标量不是更有意义吗?您在处理阵列时更加灵活。谢谢@GordonLinoff@user1934428是的,使用数组更有意义。但无法将它们转换为数组。我尝试了IFS来转换数组。我的场景是这样的。readarray
是转换为数组的合适工具,假设有bash 4.0或更新版本。在旧版本的bash中,可以使用read-a
。请参阅为什么在不适当的情况下使用array=($value)
在IFS上拆分。
$ gawk '
ARGIND==1 { # process abc data
a[FNR]=$0 # hash to a
n++ # abc and dt expected to have
next # same number of records
}
ARGIND==2 { # process dt data
b[FNR]=$0 # hash to b
next
}
split($0,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