ファイルから文字列を検索して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

これを行うにはgrepawkおよびを使用できます。sedまず、その単語を含む不要な最初の行をフィルタリングするにはreceived(ここでこの行だけをフィルタリングするにはここで一意の式を使用する必要があります)、次の行をawkbyに分割してから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

パイプは必要ありませんgrepawksed

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

関連情報