将Squoop评估结果导出到以逗号分隔的输出中

时间:2019-06-28 04:17:06

标签: bash shell sqoop

我正在运行一个sqoop评估代码,以管道分隔格式生成输出。我希望以逗号格式保存它,并删除多余的格式,以便可以将其存储在变量中并可以在其他地方使用。

下面是代码:

sqoop eval -Dmapreduce.job.queuename=comres $PASS_STRING --connect 'jdbc:sqlserver://XXXX:1433;DatabaseName=XXXX' --query "select column_name from information_schema.columns where table_name='MOT_BAJA' AND TABLE_CATALOG='EEEE'"

这是现在显示的内容:

------------------------
| column_name          |
------------------------
| TB_CODIGO            |
| TB_ELEMENT           |
| TB_INGLES            |
| TB_IMSS              |
| TB_NUMERO            |
| TB_TEXTO             |
| LLAVE                |
------------------------    

我想要这样:

TB_CODIGO,TB_ELEMENT,TB_INGLES,TB_IMSS,TB_NUMERO,TB_TEXTO,LLAVE    

1 个答案:

答案 0 :(得分:0)

您也许可以使用awk:

your_command | awk 'NR > 3 && NF==3 {printf "%s%s", (printed ? "," : ""), $2; printed++}'

说明:

NR > 3 && NF == 3:如果我们当前正在处理的行数(NR)大于3,并且该行的字段数(NF)为3,则继续使用代码处理该行在{ ... }中。

printed:我们将到目前为止已打印的字段数保留在该变量中。

(printed ? "," : ""):如果到目前为止已经打印了至少一个字段,则结果为“,”。否则,它的结果为空字符串“”。

printf "%s%s", (printed ? "," : ""), $2:如果以前已经打印过一个字段,请打印一个“,”。然后打印当前行的第二个单词。