Received timestamp=1459434658969:
ABC: Field id=0 double 11.4
DEF: Field id=1 string >def<
GHI: Field id=2 string >g_hi<
我想读取包含上述格式输入的文件,并将以下数据输出到 xml 文件中:
ABC: 11.4
DEF: def
GHI: g_hi
答案1
为此,您可以使用grep
,awk
和。sed
首先,过滤掉不需要的包含该单词的第一行received
(您应该在此处使用唯一的表达式以确保仅过滤此行),让我们awk
通过 and 拆分以下行,然后删除
<
and >
with sed
:
cat a.txt | grep -v received | awk '{print $1 " " $5}' | sed -e 's/[<>]//g'
在上面的例子中a.txt
包含输入
received timestamp=1459434658969:
ABC: Field id=0 double 11.4
DEF: Field id=1 string >def<
GHI: Field id=2 string >g_hi<
结果是:
ABC: 11.4
DEF: def
GHI: g_hi
答案2
不需要管道grep
,awk
anssed
perl -e 'while (<>) {
s/[<>]//g ;
next if ( /received/ ) ;
@Fld = split(" ", $_);
printf "%s %s\n",$Fld[0],$Fld[4] ;}' a.txt
会做的。
您可以将代码放入 perl 文件中
perl -f a.pl a.txt