파일에서 문자열을 검색하여 xml로 출력

파일에서 문자열을 검색하여 xml로 출력
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.awksed

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

관련 정보