Среди всех других ответов, здесь включающих историю.
Я установил
HISTFILESIZE=2024
HISTSIZE=1024
в ~/.bash_profile
В дополнение к другому ре комментариев: история
Другая полезная функция...
Начало истории вспоминает с
!first few letters<ESC>Ctrl-E
повторно вызовет последнюю команду, которая началась с первых нескольких букв
например:
!find<ESC>Ctrl-E
Вы не упоминали, используете ли Вы GUI или командную строку только. При использовании GUI можно использовать одного из персистентных менеджеров по буферу обмена к скопировать/вставить наиболее часто используемым командам, идентификаторам пользователей, паролям, URL, и т.д.
Так как Вы не хотите запаздывание +
, Вы могли сделать:
fold -w3 | paste -sd+ -
Таким образом, сверните строки на 3 ширине символов и вставьте те 3 символьных строки с собой с + как разделитель, который в действительности похож на изменение каждого символа новой строки, но последнего в a +
. Если вход имел больше чем одну строку, Вы закончите с теми строками, к которым присоединяются с a +
который может или не может быть тем, что Вы хотите.
Если Вам действительно нужен он, чтобы быть sed
, можно удалить запаздывание +
после:
sed 's/.../&+/g;s/+$//'
sed 's/.../&+/g'
для получения способа работать, Вы не должны выходить {}
символы:
sed -r 's/([A-Z]{3})/\1+/g'
Если sed не, необходимость с помощью Ruby могла бы быть альтернативой. Интерпретатор Ruby, ruby
, может использоваться как sed и awk путем выполнения его с -n
опция, которая заставляет его выполнить итерации по ее входу. Интерпретатор может затем быть каналом с остротой Ruby путем добавления его как аргумента -e
опция (который говорит интерпретатору интерпретировать аргумент -e
вместо того, чтобы искать сценарий в файле).
Для этой конкретной проблемы можно использовать следующую остроту (адаптированный от https://stackoverflow.com/a/3184271/789593):
ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
На простом языке это
scan(/.{3}|.+/)
, во входной строке, $_
(в этом случае вход, как ожидают, прибудет из стандарта в), и помещает каждое соответствие в массив,join("+")
,puts
.Например,
echo "AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUG" | ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UG
Обратите внимание, что это не добавляет запаздывания '+'.
+$
соответствует плюс символ сразу до конца строки. – Chris Down 21.12.2012, 23:14fold -w3
повреждает строку в 3 символьных строки.paste -sd+ -
поворачивает новые строки в+
. очень хороший – bahamat 22.12.2012, 05:40