Можно сделать это с sed
и awk
:
$ sed 's/[^"]//g' dat | awk '{ print length }'
2
0
Где dat
Ваш текст в качестве примера, sed удаляет (для каждой строки) все не -"
символы и awk
печать для каждой строки его размер (т.е. length
эквивалентно length($0)
, где $0
обозначает текущую строку).
Для другого символа просто необходимо изменить sed выражение. Например, для (
кому:
's/[^(]//g'
Обновление: sed
вид излишества для задачи - tr
достаточно. Эквивалентное решение с tr
:
$ tr -d -c '"\n' < dat | awk '{ print length; }'
Значение этого tr
удаляет все символы, которые не являются (-c
дополнение средств) в наборе символов "\n
.
Ну, когда histappend
не установлен, это не означает, что история вытерта на каждом выходе оболочки. Без histappend
колотите читает histfile на запуске в память - во время операции, новые записи добавляются - и на оболочке выходят, последние строки HISTSIZE записаны в файл истории без добавления, т.е. замены предыдущего содержания.
Например, если histfile содержит 400 записей, во время времени выполнения удара, 10 новых записей добавляются - histsize, установлен на 500, то новый histfile содержит 410 записей.
Это поведение только проблематично при использовании большего количества экземпляров удара параллельно. В этом случае файл истории только содержит содержание последней оболочки выхода.
Независимый от этого: существуют некоторые люди, которые хотят вытереть их историю на выходе оболочки из-за причин конфиденциальности.
Для исторической совместимости я предполагаю. histappend
опция не существовала до удара 2.0.
histappend
.
– Gilles 'SO- stop being evil'
27.01.2011, 10:22
histappend
имейте любое отношение к лиroot
история достигает диска? Снова, это только влияет на то, что записано, не если. – underscore_d 17.11.2015, 00:54histappend
а такжеHISTCONTROL=ignoredups:erasedups:ignorespace
походит на хорошее значение по умолчанию для большинства людей. – dashesy 26.05.2016, 01:22