需要使用 bash 操作字符串数据

Need to manipulate string data using bash

我在控制台上显示的数据格式如下:

 "name1",
 "value1",
 "name2",
 "value2",
 "name3",
 "value3",
 ...
 ...

我需要以某种方式处理此输出,以便它以下列格式显示:

 name1 : value1
 name2 : value2
 name3 : value3
 ...
 ...

我不太擅长 shell 脚本编写,但我知道我的选择是 sed、tr 或 awk(或上述的组合)。我只是不知道如何完成我在这里需要的东西。提前致谢!

将其输入:

 | sed 's/^ *"\|", *$//g' | paste -d: - -

sed 删除引号,粘贴以用冒号连接 2 个连续的行。

glenn jackmans 的 paste 解决方案非常优雅,但我想我会加入一些其他解决方案。

sed : sed -ne '1~2{s/$/ : /;N;s/[",]\|\n //g;p}'

对于每个奇数行,将 : 添加到末尾,将下一行读入当前模式 space (N),删除任何引号和逗号以及换行符+space组合并打印。

awk : awk '{gsub(/[",]|^ */,"")} NR%2{printf [=16=] " : "} !(NR%2)'

替换所有引号、逗号和行前空格。对于所有奇数行(NR%2 非零的行)附加 : 并在没有换行的情况下打印。对于所有偶数行(NR%2 为零的行)打印该行(完成上一行)。