【发布时间】:2012-03-11 15:44:04
【问题描述】:
我以这种形式读取了一行数据:
KEYNAME:value,KEYNAME:value,KEYNAME:value
(请注意键是不带空格的字符串,值是整数)
我需要选择一些特定的键(不知道它们的相对位置)并在不同的行上打印它们的值:
value
value
value
到目前为止,我想到了将输入行转换为多个 KEY:value 行、grepping 我想要的键、强加已知顺序并最终通过 cut 再次删除关键部分的方法:
sed 's/,/\n/g' | egrep '(FooKey|BarKey|BazKey)' | sort | cut -d':' -f2
我以为我可以用 awk 安排一些东西,其中我只知道基础知识,但我只能按位置顺序管理字段,而不是按名称(键名)。
可以使用其他语言(即 Python 或 Perl)来完成,但我将其作为练习来使用常用的 shell 工具来完成所有事情。此外,我仍然更喜欢上述解决方案,而不是加载更大的解释器,如 python 或 perl。
【问题讨论】:
标签: shell command-line awk grep