| 1 | #!/bin/bash |
| 2 | # Usage: ./ci_clean_log.sh ci.log |
| 3 | # This script strips timestamps and color codes from CI log files. |
| 4 | |
| 5 | # Check if argument is given |
| 6 | if [ $# -lt 1 ]; then |
| 7 | echo "Usage: $0 ci.log" |
| 8 | exit 1 |
| 9 | fi |
| 10 | |
| 11 | INPUT_FILE="$1" |
| 12 | |
| 13 | # GNU sed uses "-i [-r]" while BSD/macOS sed needs "-i '' [-E]"; detect once. |
| 14 | if sed --version >/dev/null 2>&1; then |
| 15 | sedi() { sed -i "$@"; } |
| 16 | SED_ERE=-r |
| 17 | else |
| 18 | sedi() { sed -i '' "$@"; } |
| 19 | SED_ERE=-E |
| 20 | fi |
| 21 | |
| 22 | # Strip timestamps |
| 23 | sedi 's/^\[[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}Z\] //' "$INPUT_FILE" |
| 24 | |
| 25 | # Strip Buildkite inline timestamp markers (ESC _bk;t=<ms> BEL) |
| 26 | sedi 's/\x1B_bk;t=[0-9]*\x07//g' "$INPUT_FILE" |
| 27 | |
| 28 | # Strip colorization |
| 29 | sedi "$SED_ERE" 's/\x1B\[[0-9;]*[mK]//g' "$INPUT_FILE" |