linux - 如何在 bash 中将我的 .txt 文件转换为 .json?

标签 linux bash ubuntu

这个问题在这里已经有了答案:





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
(这里使用 headecho 来处理末尾不必要的逗号。)
例子:
$ ./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/

相关文章:

c++ - 使用OpenSSL和锁的多线程程序随机崩溃

c++ - Linux - 限制每个进程的线程数

bash - 如果本地文件不存在,则从远程计算机对其进行 scp 并打印消息

linux - 获取处理器频率

c - linux以太网框架套接字说明

java - 选择 Sun Java 6 时出现的错误

bash - 为什么 shell 脚本在其他地方运行相同的代码时会出现语法错误?

python - Linux下的流量整形

r - 下载 RPostgreSQL 时出现问题

php - Magento 1.7.0.0 上的奇怪问题