如何编辑“ |” sqllite3使用sed命令的结果

时间:2018-08-19 09:35:59

标签: sql sqlite awk sed

嗨,我有这个数据库:

id   | item_name   | number_of_store| store_location|
+----+---------+-------------------+-------------+
|  3 | margarine | 2              | QLD         |
|  4 | margarine | 2              | NSW         |
|  5 | wine      | 3              | QLD         |
|  6 | wine      | 3              | NSW         |
|  7 | wine      | 3              | NSW         |
|  8 | laptop    | 1              | QLD         |
+----+---------+-------------------+-------------+

使用不同于sqllite3语法的以下代码,我得到了想要的结果:

id   | item_name   | number_of_store| store_location|
+----+---------+-------------------+-------------+
|  3 | margarine | 2              | QLD         |
|  4 | margarine | 2              | NSW         |

语法是:

sqlite3 store.sqlite 'select item_name,number_of_store,store_location from store where item_name = 'margarine'> store.txt

但是当我将其保存到txt时

3|margarine|2|QLD
4|margarine|2|NSW

但是我想要的txt输出是

3,margarine,2,QLD
4,margarine,2,NSW

我认为我应该使用SED,但不确定如何做

我尝试过

'|sed 's/|//g' |sed 's/|//g'|sed 's/^//g'|sed 's/$//g' 

但是结果只会删除'|'我不太确定如何将其更改为“,”

1 个答案:

答案 0 :(得分:1)

尽管您应该使用sql本身,但是根据您的要求,您可以使用以下sed

awk '{gsub("|",",")} 1' Input_file

或在sed中:

sed 's#|#,#g'  Input_file

如果要使用sed -i.bak选项将输出保存到Input_file本身,它将备份Input_file并将输出保存到Input_file本身。