バックアップ ソリューション用のログ ファイルを作成しています。
バックアップ ソリューションは、単純な 7-zip 更新コマンドです。
どのファイルをバックアップするかをログに記録したいと思います。>> log.txt を使用すると、結果は得られますが、7-zip が出力する不要な情報も多数得られます。
画面に表示されている内容を部分的にログに記録する方法を探しています。7z .... >templog.txt を使用して、templog.txt に何かを行ってから log.txt に追加することは構いません。しかし、コマンドラインから templog.txt から行を選択して削除する方法もわかりません。
つまり、私の質問は、templog.txt から最初の 10 行を削除するか、代わりに画面上の出力の一部のみをログファイルにリダイレクトするにはどうすればよいか、ということに尽きると思います。
ボーナス質問: templog.txt または出力リダイレクトから先頭以外の行を選択的に削除するにはどうすればよいでしょうか?
答え1
templog.txt から最初の 10 行を削除したり、画面上の出力の一部だけをログファイルにリダイレクトしたりするにはどうすればよいですか?
以下は、あなたが求めているものを実現するためのいくつかの方法です。特定の文字列を含む行を省略するそれらには検索文字列あるいは単に特定の行番号を削除すると翻訳templog.txt からその内容を削除し、log.txt の完全なログ ファイルに追加します。
FINDSTRの使用
これにより、templog.txt 内の二重引用符内の文字列が log.txt に追加されなくなります。
FINDSTR /V /I "string1 string2 string3 string4" templog.log>>log.txt
これにより、templog.txt 内の各スイッチの後の二重引用符内の正規表現が/C:
log.txt に追加されなくなるため、省略するには一致させる必要のある各正規表現を確実に用意する必要があります。
FINDSTR /V /R /C:"<regex1>" /C:"<regex2>" /C:"<regex3>" templog.log>>log.txt
SEDの使用
これにより、templog.txt から 1 行目から 10 行目が削除され、その後、残りの行が log.txt に追加されます。
sed -i -e "1,10d" templog.txt
その他のリソース
答え2
PowerShell - ファイルから特定の行を削除する
以下のPowerShellコマンドを使用して、最初の5行をスキップすることができます。-Skip
。オブジェクトの選択templog.txt ファイルの内容から、スキップして省略したファイル行を除くすべての内容を更新します。
(Get-Content "C:\path\templog.txt" | Select-Object -Skip 5) | Set-Content "C:\path\templog.txt"
以下のPowerShellコマンドは、-Skip
パラメータとともに使用できます。オブジェクトの選択templog.txt の最初の 5 行をスキップし、それ以外の行をすべて log.txt ファイルに追加します。
(Get-Content "C:\path\templog.txt" | Select-Object -Skip 5) | Add-Content "C:\path\log.txt"