#!/bin/bash __DIR__=$(dirname $(realpath $0)); source $__DIR__/../../lib/include/bash/const; source $__DIR__/../../lib/include/bash/func; # [1] Check arguments #========================================================# # (1) If argument missing # if [ $# -lt 2 ]; then slog "Missing argument(s)" "file:truncate" "update"; echo 128; exit 128; fi; # (2) Check argument #1 # if [ ! -e "$DATA_DIR/$1" ]; then slog "Data file '$1' does not exist in '$DATA_DIR'" "file:truncate" "update"; echo 129; exit 129; fi; # (3) Check number of lines to truncate # if [ $2 -gt $(wc -l "$DATA_DIR/$1" | awk '{print $1}') ]; then slog "Failure: asked to remove $2 lines out of `wc -l "$DATA_DIR/$1" | awk '{print $1}'` lines" "file:truncate" "update"; echo 130; exit 130; fi; # [2] Truncate file #========================================================# # (1) Increment by 1 (because exlusive) # incr=$(expr $2 + 1); # (2) Truncate file # tail -n +$incr "$DATA_DIR/$1" | tee "$DATA_DIR/$1" > /dev/null; slog "Succesfully truncated $2 lines" "file:truncate" "update"; echo 0; exit 0;