这个问题在这里已经有了答案:
converting lines to json in bash
(5 个回答)
Convert data in a text file into JSON [duplicate]
(3 个回答)
1年前关闭。
我有一个这样的文本文件,
Name: john
...some random characters
Title: Dev
...some random characters
Country: Iceland
...some random characters
Name: randy
...
Title: Professor
...
Country: Greenland
...
我正在寻找一种将其转换为这样的 json 的方法,{
Name: john,
Title: Dev,
Country: Iceland
},
{
Name: randy,
Title: Professor,
Country: Greenland
}
每个重要行之间总是有一行额外的随机字符。我是 bash 的新手,很难弄清楚如何做到这一点,所以我希望这里有人可以帮助我。
我试过这个命令但没有用,
jq -Rs '[ split("\n")[] | select(length > 0) | split(":") | {Name: .[0], Title: .[1], Country: .[2]}]' text.txt
最佳答案
在您的特殊情况下,可以通过 awk
来实现:
#!/usr/bin/env bash
awk -F':' '{ if ($1=="Name") {name=$2}
if ($1=="Title") {title=$2}
if ($1=="Country") {print "{\nName:"name",\nTitle:"title",\nCountry:"$2"\n},"}
}' | head -c -2
echo
(这里使用 head
和 echo
来处理末尾不必要的逗号。)例子:
$ ./txt2json.sh <data.txt
{
Name: john,
Title: Dev,
Country: Iceland
},
{
Name: randy,
Title: Professor,
Country: Greenland
}
关于linux - 如何在 bash 中将我的 .txt 文件转换为 .json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62767327/