Вы можете сделать это с awk
вместо grep
в командной строке:
example.file:
A 1-6
A 1-7
B 1-8
B 1-9
B 1-10
c 1-11
C 1-12
D 1-13
F 1-14
F 1-15
f 1-16
AWK (без учета регистра):
cat example.file | awk 'BEGIN {last=""} {if (tolower($1) != last) printf "<b>"$1"</b>"; else printf $1; print " "$2;last=tolower($1)}'
Выход:
<b>A</b> 1-6
A 1-7
<b>B</b> 1-8
B 1-9
B 1-10
<b>c</b> 1-11
C 1-12
<b>D</b> 1-13
<b>F</b> 1-14
F 1-15
f 1-16
С незначительной настройкой вы также можете просто избежать печати первого избыточного столбца целиком и суммировать все данные за первым появлением:
cat t | awk 'BEGIN {last=""} {if (tolower($1) != last) print "<b>"$1"</b>"; print $2;last=tolower($1)}'
Выход:
<b>A</b>
1-6
1-7
<b>B</b>
1-8
1-9
1-10
<b>c</b>
1-11
1-12
<b>D</b>
1-13
<b>F</b>
1-14
1-15
1-16
Если это действительно HTML, вам, вероятно, также следует добавить теги <BR>
.