Команда "Sed" для удаления строки с точным совпадением, никаких специальных символов не включается

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
1
25.06.2018, 16:12
1 ответ

\b соответствует границе слова в GNU sed, то есть точке между «символом слова» и символом слова, отличным от -. Буквы, цифры и знаки подчеркивания являются первыми, точки и тире (среди прочих )вторыми, поэтому в конце localhostв конце строки есть граница слова, а также перед точками и тире. Но не между tи 2или tи r.

Если вы хотите удалить строку только со словом localhost, просто используйте sed -e '/^localhost$/d'или дажеgrep -vFx 'localhost'(-vдля обратного соответствия, -Fдля фиксированного совпадения строки, -xдля полного совпадения строки )].

Или, если у вас могут быть пробелы в конце:sed -e '/^localhost[[:blank:]]*$/d'

4
27.01.2020, 23:23

Теги

Похожие вопросы