файл истории отметок времени, вызывающий ошибочные строки в команде истории

Если вы действительно должны использовать sed, то возможным алгоритмом будет добавление пробелов перед строкой math, пока их 18 или меньше предшествующих символов:

$ sed -e :a -e 's/\(^.\{,18\}\)math/\1 math/; ta' file
how are you        math123 
good               math234
try this           math500 

Если вы хотите переместить только последнее вхождение строки, вы можете привязать его к концу строки. Например, если задано что-то вроде

$ cat file
how are you math123
good math234
try this math500
math101 is enough math

, тогда при условии отсутствия завершающего пробела

$ sed -e :a -e 's/^\(.\{,18\}\)\(math[^[:space:]]*\)$/\1 \2/; ta' file
how are you        math123
good               math234
try this           math500
math101 is enough  math

Если ваш sed имеет расширенный режим регулярного выражения, вы можете упростить до

sed -E -e :a -e 's/^(.{,18})(math[^[:space:]]*)$/\1 \2/; ta'
1
23.05.2016, 06:51
1 ответ

Я бы оставил файл истории в покое и вместо этого реализовал вашу запись команд в обработчике prompt_command. Я бы также сделал запись в личный файл журнала, тогда у вас не будет конфликтов с другим использованием файла истории или проблем с доступом других пользователей / root

0
28.01.2020, 01:17

Теги

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