ループは110行ごとに変わります。

ループは110行ごとに変わります。

ファイルの110行ごとに現在の日付にタイムスタンプを変更したいと思います。ファイルにcatを使用し、それをsedにパイプして代替操作を実行し、ファイルに書き込みます。 110行ごとに日付のみを変更して、変更時に現在の日付を持つようにする方法はありますか?以下は、現在のタイムスタンプを変更する方法の例です。これはうまくいきますが、ファイル全体を変更します。

cat /path/to/file | sed "s/[a-zA-Z]\{3\}\s[0-9]\{1,2\}\s[0-9]\{2\}\:[0-9]\{2\}\:[0-9]\{2\}/$(date +"%b %d %H:%M:%S")/g" >> /path/to/newfile

私は解決策を見つけるために尾と頭で冒険を残しましたが、下のループは最初の110だけを完了しました。

i=0
jump=110
while [ $i -le 1100 ]
do
tail -n $i | head -n $jump /path/to/file | sed "s/[a-zA-Z]\{3\}\s[0-9]\{1,2\}\s[0-9]\{2\}\:[0-9]\{2\}\:[0-9]\{2\}/$(date +"%b %d %H:%M:%S")/g" >> /path/to/newfile
i=$((%i + $jump))
done

入力例は次のとおりです。

Apr 15 16:29:19 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159

出力は変更された日付と同じでなければなりません。

Apr 1 16:29:19 generic.com WindowsLog Computer=COMP-user-0001   User=user-0001  TimeGenerated=1554103759    TimeWritten=1554103759

ベストアンサー1

なぜこれをしたいのか分かりません。ただし、GNUバージョンがある場合は、そのオプションを使用して既存のコマンドを介してファイルブロックを処理splitできます。--filtersed

split -l 110 file --filter='
  sed "s/[a-zA-Z]\{3\}\s[0-9]\{1,2\}\s[0-9]\{2\}\:[0-9]\{2\}\:[0-9]\{2\}/$(date +"%b %d %H:%M:%S")/"
' > path/to/newfile

これを説明するために、短い(25行)入力ファイルを使用し、5行ごとに分割し、結果が大きく異なることを確認するために、タイムスタンプにナノ秒を追加しました。

$ split -l 5 file --filter='
    sed "s/[a-zA-Z]\{3\}\s[0-9]\{1,2\}\s[0-9]\{2\}\:[0-9]\{2\}\:[0-9]\{2\}/$(date +"%b %d %H:%M:%S.%N")/"
  '
Apr 01 13:35:36.817804684 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.817804684 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.817804684 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.817804684 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.817804684 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.824106329 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.824106329 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.824106329 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.824106329 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.824106329 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.831402445 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.831402445 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.831402445 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.831402445 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.831402445 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.840339832 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.840339832 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.840339832 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.840339832 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.840339832 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.844512992 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.844512992 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.844512992 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.844512992 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159
Apr 01 13:35:36.844512992 generic.com WindowsLog Computer=COMP-user-0001  User=user-0001  TimeGenerated=1523806159   TimeWritten=1523806159

おすすめ記事