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
다음 줄을 by로 분할한 다음
<
the 및를 >
제거해 보겠습니다 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
sed
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