私はコマンドを実行しました
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}"