1

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

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

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

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

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

4

2 回答 2

3

将其导入:

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

sed 删除引号,粘贴以将 2 个连续行与冒号连接在一起。

于 2015-03-26T22:54:51.777 回答
1

格伦杰克曼斯的paste解决方案非常优雅,但我想我会加入其他一些解决方案。

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

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

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

替换所有引号、逗号和换行符。对于所有奇数行(NR%2非零的行)追加:和打印不带换行符。对于所有偶数行(NR%2为零的行)打印该行(完成前一行)。

于 2015-03-26T23:36:46.920 回答