Linux grep文本文件中的多个字符串并将其导出到CSV
我有一个shell脚本,它正在生成多个输出 比如说Linux grep文本文件中的多个字符串并将其导出到CSV,linux,bash,shell,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
#/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
paste
命令与bash进程替换一起使用:
paste -d, <(echo "$var1") <(echo "$var2") <(echo "$var3")
确保引用变量以维护其中的换行符
您的管道可以更简单:不需要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)
paste-d\
paste
命令与bash进程替换一起使用:
paste -d, <(echo "$var1") <(echo "$var2") <(echo "$var3")
确保引用变量以维护其中的换行符
您的管道可以更简单:不需要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)
paste-d\
显示test.json
不建议使用正则表达式解析json。请将cat foo | grep“bar”
替换为grep“bar”foo
cat
用于连接,不用于打印。请避免“给我代码”问题。而是显示您正在处理的脚本,并说明问题所在。另请参见显示test.json
不建议使用正则表达式解析json。请将cat foo | grep“bar”
替换为grep“bar”foo
cat
用于连接,不用于打印。请避免“给我代码”问题。而是显示您正在处理的脚本,并说明问题所在。另请参见下面给出的错误new1.sh:第19行:意外标记附近的语法错误('new1.sh:line 19:
paste我特别使用了bash语法。请确保您的shebang行是#!/bin/bash
,并且您没有像sh myscript.sh
那样调用脚本,而是像bash myscript.sh
那样调用下面的eerror new1.sh:第19行:意外标记附近的语法错误('new1.sh:19行:
粘贴我特别使用了bash语法。确保您的shebang行是#!/bin/bash
,并且您没有像sh myscript.sh
那样调用脚本,而是像bash myscript.sh