【发布时间】:2015-03-01 17:07:06
【问题描述】:
shell 脚本正在分析控制表以获取正确的处理参数。
目前,这很简单 - 使用 grep,它指向正确的行,awk {print $n} 确定正确的列。
列仅由空格分隔。没有特殊规则,只是用空格分隔的值。
一切都很好并且工作正常,用户喜欢它。
只要没有一列是空的。对于最后一列,可以将其留空,但如果有人没有在中间填写一列,则会混淆 awk {print $n} 逻辑。
当然,可以作为用户填写每个条目,也可以将列分隔符定义为“;” .
如果跳过某些内容,可以使用“;;”但是,我不希望更改表格样式。
所以问题是:
如何有效地分析列值中有空格的表格?表格是这样的:
ApplikationService ServerName PortNumber ControlValue_1 ControlValue_2 Read chavez.com 3599 john doe Write 3345 johnny walker Update curiosity.org jerry
可能有什么帮助: 如果在列中设置了值,则在其列标题描述下(更准确地说更不精确)。
干杯,
塔里克
【问题讨论】:
-
在我看来,一个潜在的解决方案是通过它们各自的标题行来确定列。如果端口号的列标题例如从第 30 列到第 40 列,则脚本在第 30 到 40 列中查找以获取端口号。里面的东西:好的,用作端口号。没有找到/空:跳过。但是,考虑到我的 Shell 技能,我担心这种努力 :-) 潜在的副作用当然是,标题必须始终消耗与值相同或更多的空间/行,但这可以管理。
-
您能否添加有关输入数据的更多详细信息?值是否可能超过标题定义的列,写入下一列?值也可以有空格吗?每列的可能值是否可确定(例如,“PortNumber”列始终为
[0-9],“ControlValue_1/2”列的已知字符串集)。请更新您的问题。我还建议更新标题以反映您的要求,例如“解析缺少值的空格分隔值”