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