以下のようなJavaコードでログファイルを作成しました。ファイルをUNIXで1行ずつ読み込んでファイル内の行を更新するシェルスクリプト
<date>|<command>|<Error>
<date>|<command>|<Error>
<date>|<command>|<Error>
<date>|<command>|<Error>
私はラインからラインでラインにループにスクリプトを記述し、コマンドを実行し、=同じファイルに行に「処理済み」のステータスを更新する必要があります。
AutoTrigger()
{
echo "`date`: Checking the status of the files . Please wait..."
if [[ -s /tmp/samplefilelog.log ]] ; then
cat /tmp/samplefilelog.log | while read LINE
do
echo "LINE:" $LINE
LINE1=`echo $LINE | grep -v Processed`
echo "LINE1:" $LINE1
Command=`echo $LINE1 | cut -d "|" -f3`
echo "command:" $Command
$Command >> /tmp/Processinglogs.txt
printf $LINE | awk 'BEGIN{FS=OFS="|"}{$4="Processed";print}'
cat /tmp/samplefilelog.log
done
fi
}
おかげ
「処理済」に変更する前に、古い値「」は何ですか?少なくとも新しいステータス(例えば、「未処理」)と同じくらい長くならない限り、その場で変更を行うことはできません。より長いステータスは、ファイルの次の行のマテリアルを上書きします。さらに、行の読み込み、行の検索、およびシェルへの行の書き込みが非常に難しい。したがって、「同じファイル」に書き込むアウトラインアプローチは、本質的にシェルで致命的な欠陥があります。それはC言語やそれに類する言語では難しいでしょう。それは長さの条件が満たされている場合に行うことができますが、おそらく良い考えではありません。情報を新しいファイルにコピーする必要があります。 –
ようこそスタックオーバーフロー!質問を編集して[これまでに試したこと](http://whathaveyoutried.com)を表示してください。問題のあるコードの[mcve]を含める必要があります。次に、特定の問題を解決するために役立つことができます。 [ask]も読んでください。 –