SATS/lib/file/truncate

46 lines
1.0 KiB
Bash
Executable File

#!/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") 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;