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

时间:2015-03-26 22:45:05

标签: bash shell name-value

我在控制台上以下列格式显示数据:

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

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

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

我对shell脚本不是很了解,但我知道我的选项是sed,tr或awk(或前面提到的组合)。我无法弄清楚如何在这里完成我需要的东西。提前谢谢!

2 个答案:

答案 0 :(得分:3)

将其输入:

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

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

答案 1 :(得分:1)

glenn jackmans'paste解决方案相当优雅,但我想我会投入其他一些解决方案。

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

对于每个奇数行添加:到最后,读取当前模式空间中的下一行(N),删除任何引号和逗号以及换行符+空格组合并打印。

使用awkawk '{gsub(/[",]|^ */,"")} NR%2{printf $0 " : "} !(NR%2)'

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