我有一条有数千行的行,如下所示:
{"100K";"0.00001";"10";"0.01"]}
{"101K";"0.0001";"100";"0.1"]}
{"102K";"1";"1000";"1"]}
{"102K";"1";"1000";"1"]}
{"103K";"0.01";"10000";"10"]}
{"104K";"0.1";"100000";"100"]}
{"105K";"1";"1000000";"1000"]}
{"109K";"0.000001";"1";"1"]}
{"120K";"0.000012";"12";"12"]}
我想将;
一行中第一次出现的 替换为:[
使这些线等于
{"100K":["0.00001";"10";"0.01"]}
{"101K":["0.0001";"100";"0.1"]}
{"102K":["1";"1000";"1"]}
{"102K":["1";"1000";"1"]}
{"103K":["0.01";"10000";"10"]}
{"104K":["0.1";"100000";"100"]}
{"105K":["1";"1000000";"1000"]}
{"109K":["0.000001";"1";"1"]}
{"120K":["0.000012";"12";"12"]}
我如何使用 sed 或其他 UNIX 命令来做到这一点?
答案1
sed 's/;/:[/' file
{"100K":["0.00001";"10";"0.01"]}
{"101K":["0.0001";"100";"0.1"]}
{"102K":["1";"1000";"1"]}
{"102K":["1";"1000";"1"]}
{"103K":["0.01";"10000";"10"]}
{"104K":["0.1";"100000";"100"]}
{"105K":["1";"1000000";"1000"]}
{"109K":["0.000001";"1";"1"]}
{"120K":["0.000012";"12";"12"]}
答案2
既然您用以下标签标记了问题awk:
awk '{ sub(/;/, ":["); print; }'
答案3
您也可以尝试使用以下 2 个命令:
perl -pne "s/;/:[/" filename
sed 's/;/:[/1' filename
输出:
{"100K":["0.00001";"10";"0.01"]}
{"101K":["0.0001";"100";"0.1"]}
{"102K":["1";"1000";"1"]}
{"102K":["1";"1000";"1"]}
{"103K":["0.01";"10000";"10"]}
{"104K":["0.1";"100000";"100"]}
{"105K":["1";"1000000";"1000"]}
{"109K":["0.000001";"1";"1"]}
{"120K":["0.000012";"12";"12"]}