shell 文本转字典
时间: 2023-07-26 22:20:42 浏览: 48
在 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编程排序函数
在shell编程中,可以使用sort命令对文本进行排序。sort命令可按照字典序进行排序,也可以指定排序的方式。
以下是一个简单的排序函数示例,可按照数字大小进行排序:
```shell
sort_function() {
# $1为输入文件名
# $2为排序后输出文件名
sort -n $1 > $2
}
```
在此示例中,sort命令使用-n选项以数字大小进行排序,并将结果输出到指定的输出文件中。
要使用此函数,请将其保存到脚本文件中,并将输入文件名和输出文件名作为参数传递给该函数。例如:
```shell
sort_function input.txt output.txt
```
这将读取input.txt中的内容,并将按数字大小排序后的结果写入output.txt文件中。