Skip to content

Commit 6696472

Browse files
committed
! improve uq: use IGNORECASE built-in var
1 parent 95675ae commit 6696472

File tree

3 files changed

+19
-36
lines changed

3 files changed

+19
-36
lines changed

bin/helper/uq.awk

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,73 +2,55 @@
22

33
function printResult(for_lines) {
44
for (idx = 0; idx < length(for_lines); idx++) {
5-
line=for_lines[idx]
6-
count=line_count_array[storeLine(line)]
7-
8-
#printf "DEBUG 1: %7s %s, index: %s\n", count, line, idx
5+
line = for_lines[idx]
6+
count = line_count_array[caseAwareLine(line)]
7+
#printf "DEBUG: %s %s, index: %s, uq_opt_only_repeated: %s\n", count, line, idx, uq_opt_only_repeated
98

109
if (uq_opt_only_unique) {
1110
if (count == 1) printLine(count, line)
1211
} else {
13-
#printf "DEBUG 2: %7s %s uq_opt_only_repeated: %s\n", count, line, uq_opt_only_repeated
14-
15-
if (uq_opt_only_repeated && count <= 1) {
16-
continue
17-
}
12+
if (uq_opt_only_repeated && count <= 1) continue
1813

19-
if (uq_opt_repeated_method == "prepend" || uq_opt_repeated_method == "separate" && outputted) {
20-
if (!compareLine(line, outputted)) print ""
14+
if (uq_opt_repeated_method == "prepend" || uq_opt_repeated_method == "separate" && previous_output) {
15+
if (line != previous_output) print ""
2116
}
2217

2318
printLine(count, line)
24-
outputted=line
19+
previous_output = line
2520
}
2621
}
2722
}
2823

2924
function printLine(count, line) {
30-
if (uq_opt_count) {
31-
printf "%7s %s%s", count, line, ORS
32-
} else {
33-
print line
34-
}
35-
}
36-
37-
function storeLine(line) {
38-
if (uq_opt_ignore_case) {
39-
return tolower(line)
40-
} else {
41-
return line
42-
}
25+
if (uq_opt_count) printf "%7s %s%s", count, line, ORS
26+
else print line
4327
}
4428

45-
function compareLine(line1, line2) {
46-
return storeLine(line1) == storeLine(line2)
29+
function caseAwareLine(line) {
30+
if (IGNORECASE) return tolower(line)
31+
else return line
4732
}
4833

49-
5034
BEGIN {
5135
if (uq_opt_zero_terminated) {
5236
RS = "\0"
5337
ORS = "\0"
5438
}
5539
}
5640

57-
5841
{
5942
# use index to keep lines order
60-
lines[line_index++] = $0
43+
original_lines[line_index++] = $0
6144

62-
store_line=storeLine($0)
45+
case_aware_line = caseAwareLine($0)
6346
# line_count_array: line content -> count
64-
if (++line_count_array[store_line] == 1) {
47+
if (++line_count_array[case_aware_line] == 1) {
6548
# use index to keep lines order
66-
deduplicated_lines[deduplicated_line_index++] = store_line
49+
deduplicated_lines[deduplicated_line_index++] = case_aware_line
6750
}
6851
}
6952

70-
7153
END {
72-
if (uq_opt_all_repeated) printResult(lines)
54+
if (uq_opt_all_repeated) printResult(original_lines)
7355
else printResult(deduplicated_lines)
7456
}

bin/uq

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ awk \
193193
-v "uq_opt_all_repeated=$uq_opt_all_repeated" \
194194
-v "uq_opt_repeated_method=$uq_opt_repeated_method" \
195195
-v "uq_opt_only_unique=$uq_opt_only_unique" \
196-
-v "uq_opt_ignore_case=$uq_opt_ignore_case" \
196+
-v "IGNORECASE=$uq_opt_ignore_case" \
197197
-v "uq_opt_zero_terminated=$uq_opt_zero_terminated" \
198198
-f "$PROG_DIR/helper/uq.awk" \
199199
-- ${input_files[@]:+"${input_files[@]}"} \

test-cases/uq_test.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,5 @@ test_ignore_case__count() {
107107
#################################################
108108
# Load and run shUnit2.
109109
#################################################
110+
110111
source "$BASE/shunit2-lib/shunit2"

0 commit comments

Comments
 (0)