誰かがこれで私を助けることができます:
文字列を照合して、タイムスタンプを抽出しようとしています。このため、grep/awkコマンドの組み合わせを使用しています。スティングには[1]の前と後の4つのspcesがあるので、それを回避する方法が混乱しています。プログラミングは初めてなので、ここで助けが必要です。
IS="$(grep 'Starting [1] TaskInit' process.log | awk '{print $4}')"
echo "$IS"
目的:process.logファイルの文字列と一致し、その行に関連するタイムスタンプを出力する必要があります。
スペースはここでは問題ではなく、問題なく機能するはずです。
しかし、かっこ[
は正規表現でエスケープする必要があります。だから書く:
grep 'Starting \[1] TaskInit' process.log
あなたの場合、正規表現ではなく固定文字列と一致させたいので、代わりにgrep -F
を使用する必要があります。その後、脱出する必要はありません:
grep -F 'Starting [1] TaskInit' process.log
角括弧は特別な意味があるため、エスケープする必要があります。
grep 'Starting \[1\] TaskInit' process.log
さらに、このタスクではawk
のみを使用します。このためには、次のようなものが必要です。
awk '/Starting \[1] TaskInit/ {print $4}' process.log