我有一个shell脚本,可以产生多个输出
例如
#/bin/bash
var1=`cat test.json | grep "test" | awk -F ' ' '{print $1}'`
var2=`cat test.json | grep -e "new" | awk -F ':' '{print$5}'`
var3=`cat test.json | grep -e "new-test" | awk -F ':' '{print$8}'`
echo $var1,var2,var3
第一个var1的输出是
1
2
3
4
5
第一个var2的输出是
3
4
5
6
7
第一个var3的输出是
834
45
345
73
23
如何创建以下格式的csv文件?
1,3,834
2,4,45
3,5,345
4,6,73
5,7,23
答案 0 :(得分:5)
paste
命令是您所需要的,以及bash进程替换:
paste -d, <(echo "$var1") <(echo "$var2") <(echo "$var3")
1,3,834
2,4,45
3,5,345
4,6,73
5,7,23
确保您引用变量以保持其中的换行符。
您的管道可以更简单:不需要cat,而awk可以执行grep的工作:
paste -d, \
<(awk -F ' ' '/test/ {print $1}' test.json) \
<(awk -F ':' '/new/ {print $5}' test.json) \
<(awk -F ':' '/new-test/ {print $8}' test.json)