需要使用 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
为零的行)打印该行(完成上一行)。
我在控制台上显示的数据格式如下:
"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
为零的行)打印该行(完成上一行)。