Обратное соответствие в sed, замените противоположность того, что было найдено

Хорошо наконец я нашел решение. Проблема была этим $PS1 не имел цветных последовательностей включенными с \[ и \]. Перед исправлением $PS1 был:

export PS1='\e[1;32m\u@\h:\w$ \e[m'

после того, как зафиксируйте:

export PS1='\[\e[1;32m\]\u@\h:\w$ \[\e[m\]'

Я нашел решение здесь: https://stackoverflow.com/questions/2024884/commandline-overwrites-itself-when-the-commands-get-to-long

5
21.07.2014, 23:32
3 ответа
sed -e '/^precalculated/!s/^\(.\{47\}\).*$/\1/' < h

В этом случае первые 47 символов на любой строке не совпадают с предварительно рассчитанными в начале. Совпадение строк просто копируется.

1
27.01.2020, 20:43

Я нашел этот образец:

sed  -e 's/^\(..\s.\{45\}\).*/\1/'
0
27.01.2020, 20:43

Можно было бы сопоставить любую начальную разделенную пробелами последовательность пар гекс-цифр в группу замещения, а затем просто заново заменить эту группу, например,

sed -r 's/^(([[:xdigit:]]{2}\s+)+).*$/\1/'
0
27.01.2020, 20:43

Теги

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