私は次のようなものがあります:
Error_code=1; num=5;
Error_code=2; num=7;
Error_code=3; num=9;
Error_code=1; num=2;
Error_code=2; num=5;
。 。 。
エラーコードも多いですね(約100個)。ファイル名が次のとおりであるとします。performance.log
コマンドを使用するには?エラーコードは毎回異なります。私は次のようなものがあります:
grep -i "error_code=$x;" performance.log | \
awk -F";" '{print $2}' > $x_error_code.txt
したがって、毎回変数はx
エラーコードに基づいて定義された新しい値であり、エラーコードが完了するとスクリプトは完了します。
ベストアンサー1
スクリプトawk
はすべてを行うことができます。これは、次のように純粋なBourneシェルスクリプトを使用して行うこともできます。
grep -E -o '[[:digit:]]+; num=[^;]+' performance.log \
| while IFS="; " read n num; do
echo "$num" >> "${n}_error_code.txt"
done
この部分は「行から部分grep
文字列」を抽出します。 while ループは後者を読み書きします。EEE; num=NNN
Error_code=EEE; num=NNN;
EEE
num=NNN
EEE_error_code.txt
1つの特定のエラーコード(下のEEE)にのみ興味がある場合は、コマンドを次のgrep
ように変更できます。
grep -E -o '\<EEE; num=[^;]+' performance.log | while ...
小さなエラーコードセット(以下EEE1 ... EEEn)に興味がある場合は、コマンドをgrep
次のように変更できます。
grep -E -o '\<(EEE1|EEE2|...|EEEn); num=[^;]+' performance.log | while ...