需要在Linux中将命令的输出转换为逗号分隔的值

时间:2019-07-02 13:29:44

标签: linux bash shell

我正在编写一个代码,该代码在shell脚本中以以下方式产生输出。我需要此输出以逗号分隔的格式。这是一个示例输出,实际值的数量等可能会因给定输入而有所不同,但输出的总体格式将保持不变。

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

另一种示例方式:

echo "
------------------------
| column_name          |
------------------------
| TB_CODIGO            |
| TB_ELEMENT           |
| TB_INGLES            |
| TB_IMSS              |
| TB_NUMERO            |
| TB_TEXTO             |
| LLAVE                |
------------------------
" | sed 's/[|,-]//g' | paste -d, -s | tr -d '[[:space:]]' | sed -e 's/,,//g' -e 's/column_name//g'

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

因此,通用方法如下:

<your_mysql_output> | sed 's/[|,-]//g' | paste -d, -s | tr -d '[[:space:]]' | sed -e 's/,,//g' -e 's/column_name//g'

如果在MySQL查询本身中取消列标题和边框,则可以最小化列名和边框字符的解析。 例如,

mysql -u root -p -s -r -e "show databases;"
Enter password: 
Database
information_schema
mysql
test