RHEL 7システム。次の出力ファイルがあります。
eDTG=20210210-1540
Sent 74004956
Completed 72185529 (97.54%)
Lost 18119427 (2.46%)
QPS, SERVFAIL QPS 60122 2905
eDTG=20210210-1601
私はcsvとして保存しながらタブ間隔を変更するためにsedを使用してきました。これで、次のようにQPSラインを2つの別々のラインに分割する必要があることがわかりました(ライン間に分割された数字に注意してください)。
eDTG=20210210-1540
Sent 74004956
Completed 72185529 (97.54%)
Lost 18119427 (2.46%)
QPS 60122
SERVFAIL QPS 2905
eDTG=20210210-1601
私はこれを行うことができます
awk '/QPS/ {printf "QPS\t%s\nSERVFAIL QPS\t%s",$4,$5}' output.txt
しかし、gawk -i inplaceを使用できないため、他のファイルへの書き込みに問題があります。もちろん、その; {print}
オプションを入力しないと、一致する行だけが印刷されます。その後、前の行も書き込みます。私は2番目のファイルを作成し、それを最初のファイル名にコピーする(QPSを切り取ること、...)よりも良い方法があることを知っています。あなたが提供できるどんな助けにも感謝します。
答え1
sedもっとお手伝いします。
sed -E -i 's/^QPS,[[:space:]]+SERVFAIL QPS[[:space:]]+([[:digit:]]+)[[:space:]]([[:digit:]]+$)/QPS\t \1\nSERVFAIL QPS\t \2/' file.txt
これ -私旗が葬儀を行いました。