程式狂想筆記

一個攻城師奮鬥史

0%

Shell 檢查 txt 和 總數確認檔方法

最近要人工分開 txt檔案
因為確認檔案花很多眼力去做調整
偶爾會有改錯情形
為了不發生這個原因
我做個簡單調整

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

FILE_LIST=(`ls *.txt *.ctl`)

# echo ${#FILE_LIST[@]};

for i in ${!FILE_LIST[@]}; do
FILE_LIST[$i]="${FILE_LIST[$i]%.*}"
done

# echo "${FILE_LIST[@]}" | tr ' ' '\n' | sort -u
FILE_LIST=($(echo "${FILE_LIST[@]}" | tr ' ' '\n' | sort -u ))
# echo ${#FILE_LIST[@]};
for i in ${!FILE_LIST[@]}; do
if [ -f ${FILE_LIST[$i]}.txt ]; then
# 檔案 /path/to/dir/filename 存在
echo "File ${FILE_LIST[$i]}.txt exists."
else
# 檔案 /path/to/dir/filename 不存在
echo "File ${FILE_LIST[$i]}.txt does not exists."
continue;
fi

if [ -f ${FILE_LIST[$i]}.ctl ]; then
# 檔案 /path/to/dir/filename 存在
echo "File ${FILE_LIST[$i]}.ctl exists."
else
# 檔案 /path/to/dir/filename 不存在
echo "File ${FILE_LIST[$i]}.ctl does not exists."
continue;
fi

FIRST_LINE=$(head -n 1 ${FILE_LIST[$i]}.ctl)

LINE_COUNT=$(cat ${FILE_LIST[$i]}.txt | wc -l)
#https://unix.stackexchange.com/questions/232384/argument-string-to-integer-in-bash/232386
echo "TXT: $((LINE_COUNT+1))"
echo "CTL: $FIRST_LINE" ;

if [ "$FIRST_LINE" = $((LINE_COUNT+1)) ]; then
echo "${FILE_LIST[$i]} 正確"
else
echo "${FILE_LIST[$i]} 不正確!!!!!!!!!!!!!!!!!!"
fi


done
#https://stackoverflow.com/questions/13648410/how-can-i-get-unique-values-from-an-array-in-bash

#
# line=$(head -n 1 filename)

# https://stackoverflow.com/questions/3137094/how-to-count-lines-in-a-document
# cat /dir/file.txt | wc -l