我在控制台上以下列格式显示数据:
"name1",
"value1",
"name2",
"value2",
"name3",
"value3",
...
...
我需要以某种方式操纵此输出,以便它以下列格式显示:
name1 : value1
name2 : value2
name3 : value3
...
...
我对shell脚本不是很了解,但我知道我的选项是sed,tr或awk(或前面提到的组合)。我无法弄清楚如何在这里完成我需要的东西。提前谢谢!
答案 0 :(得分:3)
将其输入:
| sed 's/^ *"\|", *$//g' | paste -d: - -
sed删除引号,粘贴以连接2个连续的行和冒号。
答案 1 :(得分:1)
glenn jackmans'paste
解决方案相当优雅,但我想我会投入其他一些解决方案。
使用sed
:sed -ne '1~2{s/$/ : /;N;s/[",]\|\n //g;p}'
对于每个奇数行添加:
到最后,读取当前模式空间中的下一行(N
),删除任何引号和逗号以及换行符+空格组合并打印。
使用awk
:awk '{gsub(/[",]|^ */,"")} NR%2{printf $0 " : "} !(NR%2)'
替换所有引号,逗号和行前导的sapces。对于所有奇数行(NR%2
非零的行)附加:
并在没有换行符的情况下打印。对于所有偶数行(NR%2
为零的行)打印行(完成前一行)。