ksh -c '
IFS=: x=2
set ${0+09:30:15} ${0+13:00:34}
for t do eval "
[ ${t#0} -lt \"\${$((x+=1))#0}\" ]" && break
done &&
echo "$1:$2:$3 is earlier than $4:$5:$6"
'
09:30:15 is earlier than 13:00:34
\b
соответствует границе слова в GNU sed, то есть точке между «символом слова» и символом слова, отличным от -. Буквы, цифры и знаки подчеркивания являются первыми, точки и тире (среди прочих )вторыми, поэтому в конце localhost
в конце строки есть граница слова, а также перед точками и тире. Но не между t
и 2
или t
и r
.
Если вы хотите удалить строку только со словом localhost
, просто используйте sed -e '/^localhost$/d'
или дажеgrep -vFx 'localhost'
(-v
для обратного соответствия, -F
для фиксированного совпадения строки, -x
для полного совпадения строки )].
Или, если у вас могут быть пробелы в конце:sed -e '/^localhost[[:blank:]]*$/d'