grep从文本文件中提取多个字符串并将其导出到CSV

时间:2018-08-14 14:09:08

标签: linux bash shell

我有一个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

1 个答案:

答案 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)