shell 文本转字典
时间: 2023-07-26 09:20:42 浏览: 78
在 shell 中,可以使用 awk 命令将文本转换成字典格式。假设我们有一个文本文件 data.txt,其中的内容如下:
```
key1=value1
key2=value2
key3=value3
```
我们可以使用以下命令将其转换为字典格式:
```
awk -F '=' '{print "\"" $1 "\":\"" $2 "\""}' data.txt | tr '\n' ',' | sed 's/,$//' | sed 's/^/{/' | sed 's/$/}/'
```
这个命令的具体含义如下:
- `-F '='` 指定以等号为分隔符。
- `'{print "\"" $1 "\":\"" $2 "\""}'` 用于输出每一行的字典键值对,并在输出的键和值两端添加引号。
- `tr '\n' ','` 将换行符替换为逗号。
- `sed 's/,$//'` 删除最后一个逗号。
- `sed 's/^/{/'` 在开头添加左花括号。
- `sed 's/$/}/'` 在结尾添加右花括号。
输出结果如下:
```
{"key1":"value1","key2":"value2","key3":"value3"}
```
相关问题
使用shell 将文本中重复行去除
你可以使用以下命令来去除文本中的重复行:
```
sort file.txt | uniq
```
其中,sort 命令将文件中的所有行按字典序排序,uniq 命令则去除相邻的重复行。如果你想要保留文本中第一次出现的行,可以使用以下命令:
```
sort file.txt | uniq -u
```
其中,uniq 命令的 -u 选项表示只输出不重复的行。
shell脚本统计不同类型消息数目,并按消息类型字典顺序输出
您好,我可以回答这个问题。可以使用grep命令筛选出不同类型的消息,再使用uniq命令统计每种类型的数量,最后使用sort命令按字典顺序排序输出。具体的shell脚本可以参考以下代码:
```
grep -oE '\b[A-Z]+\b' messages.txt | sort | uniq -c | sort -k2
```
其中,messages.txt是包含消息的文本文件,[A-Z]+表示匹配大写字母的正则表达式。
阅读全文