【发布时间】:2017-01-27 19:52:00
【问题描述】:
我有一个看起来像这样的数据集
<SUBBEGIN
IMSI=xxxxxxxxxxxx;
MSISDN=xxxxxxxxx;
DEFCALL=TS11;
CURRENTNAM=BOTH;
CAT=COMMON;
VOLTE_TAG=NOT_DEFINED;
HLR_INDEX=1;
PS_MSISDNLESS_SUPPORTED=FALSE;
CS_MSISDNLESS_SUPPORTED=FALSE;
CSRATTYPE=NO-NO-NO-NO-NO;
PSRATTYPE=NO-NO-NO-NO-NO;
ICI=NO;
STE=NO;
<SUBEND
<SUBBEGIN
IMSI=xxxxxxxxxxxx;
MSISDN=xxxxxxxxx;
DEFCALL=TS11;
CURRENTNAM=BOTH;
VOLTE_TAG=NOT_DEFINED;
HLR_INDEX=1;
PS_MSISDNLESS_SUPPORTED=FALSE;
CS_MSISDNLESS_SUPPORTED=FALSE;
CSRATTYPE=NO-NO-NO-NO-NO;
<SUBEND
这本质上是一条记录,后面是相同格式的多行。我希望输出格式为:
IMSI|MSISDN|DEFCALL|CURRENTNAM|CAT...
xxxx|xxxx|TS11|BOTH|COMMON|COMMON
非常感谢任何帮助。
【问题讨论】:
-
@sp asic 感谢您的提示,我只能使用
cat file | sed -r 's/[[:alnum:]]+=/\n&/g' | awk -F= '$1=="IMSI"{print $2}'解析文件中的一个变量,例如 IMSI。我怎样才能让代码适用于所有其他变量 -
你可以使用 Python 或 Perl 吗?
-
当您的输入可以包含多条记录时,最好在示例输入/输出中显示至少 2 条记录,否则您将获得适用于 1 条记录但不超过 1 条记录的解决方案,因为您仅提供 1 来证明您的问题并供我们测试。您目前有多个答案不适用于 2 个或更多输入记录,而答案可能更简单,具体取决于记录之间是否有空行。