我試圖解析以下的輸出:解析Linux中的shell腳本
+--------------------------------------+-----------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+--------------------------------------+-----------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 214b272c-e6a4-4bb5-96a4-c74c64984e5a | MC | 2048 | 100 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
| 71aa57d1-52e3-4499-abd2-23985949aeb4 | slmc | 4096 | 32 | 0 | | 2 | 1.0 | True |
| 7cf1d926-c904-47b8-af70-499196a1f65f | new test flavor | 1 | 1 | 0 | | 1 | 1.0 | True |
| 97b3dc38-f752-437b-881d-c3415c8a682c | slstore | 10240 | 32 | 0 | | 4 | 1.0 | True |
+--------------------------------------+-----------------+-----------+------+-----------+------+-------+-------------+-----------+
它是開放堆棧口味的名單。我如下預期輸出:
m1.tiny;m1.small;MC;m1.medium;m1.large;m1.xlarge;slmc;new test flavor;slstore;
我試了一下:
我想出了下面的命令解析:
nova flavor-list | grep '|' | awk 'NR>1 {print $4}' | tr '\n' ';'
但問題是,命令返回輸出如下:
m1.tiny;m1.small;MC;m1.medium;m1.large;m1.xlarge;slmc;new;slstore;
空間有問題我n new test flavor
。
看起來像某些SQL風格的輸出。通常可以通過生成正確的輸出而不是解析人類可讀的輸出來讓生活更輕鬆。例如,在MySQL中,您可以僅使用'SELECT Name'並使用'--batch'(可能還有'--raw')來產生非表格輸出。使用sqlite3,你可以使用'-csv'或'-line'。 – rici