web-dev-qa-db-ja.com

mysql応答をVMから特定の形式に変換する

シェルジョブを使用して、以下のテキスト形式でmysqlから応答を取得しています。

response from mysql on vm

要求に応じてテキストで

+ ------- +

| A |

+ ------- +

| 36 |

+ ------- +

+ ------- +

| B |

+ ------- +

| 57 |

+ ------- +

+ ------- +

| C |

+ ------- +

| 11 |

+ ------- +

またはのような応答

[〜#〜] a [〜#〜]

36

[〜#〜] b [〜#〜]

57

[〜#〜] c [〜#〜]

11

以下のようなテキストファイルとしてデータを簡単な方法に変換できるようにしたいと思います。

A 36

B 57

C 11

https://justpaste.it/edit/30310895/df1838c844c0fcd1

1
dynamicJos

これはあなたが探しているものですか?

$ cat file
A
36
B
57
C
11

$ awk '{printf "%s%s", $0, (NR%2 ? OFS : ORS)}' file
A 36
B 57
C 11
1
Ed Morton

この sed / awk -filter pipe は、きれいなテーブルから値をアンラップします。

cat pretty-tables-dump.txt | 
sed 's/\xC2\xA0//g' |
awk '$1=="|"{if(f){print f" "$2;f=""}else{f=$2}}'

sedを介してUTFNBSPのストリッピングを付加するように編集されました。

1
Alex Stragies

Mysqlクエリには\Gの代わりに;を使用できます。

例:

information_schema]> select count(distinct table_schema) as CNT_SCHEMA from TABLES ;
+------------+
| CNT_SCHEMA |
+------------+
|          9 |
+------------+
1 row in set (0.00 sec)

[information_schema]> select count(distinct table_schema) as CNT_SCHEMA from TABLES \G
*************************** 1. row ***************************
CNT_SCHEMA: 9
1 row in set (0.01 sec)
0
EchoMike444