grep出力から一部の列を抽出する

grep出力から一部の列を抽出する

私はコマンドを実行しました

grep -a --binary-file=text "DLDM" /home/path/ldm.log-$1* | grep -a "$line"

出力は次のとおりです。 -

/home/path/ldm.log2015:"unix","20150518 11:36:09",DLDM,CUST_PP,"unix%unix@pp",11,0,,"7A104802E728","4529800000","123456789",0,0,0,0,3,"75126BFC5DA0|548B0F66882B|250E4473F3C6",,0,"COUNTRY_CODE",21,5769,15,0,1,"CURRENCY",0.0255,1,,,,"","","001",6,"20150518 11:36:09","",""

次のような特定の列だけを印刷したいと思います。

20150518 11:36:09 , 7A104802E728 , 4529800000 , 123456789 , CURRENCY

可能であれば、CURRENCY出力の文字列を他のもの(METAなど)に変更できますか?

ベストアンサー1

awk少なくとも2番目のものの代わりにを使用できますかgrep?それはまるで

grep -a --binary-file=text "DLDM" /home/path/ldm.log-$1* |  awk -F, "/$line/ {print \$2 \",\" \$9 \",\" \$10 \",\" \$11 \",META\"}"

すべてのエスケープは$lineパターンで使用できるようにするためのものです。変数として必要でない場合は、単一引用符を外部引用符として使用し、ほとんどの内部引用符を無視できます。

CURRENCY 文字列を META に置き換えるには、awk次のように変更します。

grep -a --binary-file=text "DLDM" /home/path/ldm.log-$1* | awk -F, "/$line/ {gsub(\"CURRENCY\", \"META\", \$26);print \$2 \",\" \$9 \",\" \$10 \",\" \$11 \",\" \$26}"

おすすめ記事