Вам необходимо завершить процесс, чтобы освободить дисковое пространство . В будущем вы можете обрезать файл с помощью
echo "" > file_name
вместо удаления файла, если файл используется каким-либо запущенным процессом.
Обратная косая черта внутри выражения в квадратных скобках является буквальным. Вы хотите [^]]
. Ваше выражение [^\]]*
будет соответствовать обратной косой черте, отличной от -, за которой следует необязательный ]
.
$ sed -En 's/^\[(.* )?([^]]*)\]$/\2/p' file
default
automation
qa
Это позволяет использовать необязательные слова, оканчивающиеся пробелом, в качестве первой подстроки внутри [...]
, например. [group name]
. Строка после этих необязательных слов, до ]
, фиксируется во второй группе.
Печать каждой строки по умолчанию отключена с помощью -n
и вместо этого мы печатаем явно после каждой успешной замены.
Нам нужно -E
, так как модификатор ?
является расширенным модификатором регулярного выражения.
Без -E
вы можете использовать \{0,1\}
вместо?
(и изменить захват (
и )
на \(
и \)
соответственно ).
С GNU grep
или совместимая сборка с поддержкой PCRE:
grep -Po '^\h*\[\h*(\H+\h+)?\K.*[^]\h](?=\h*\]\s*$)'
Мы разрешаем начальные горизонтальные пробелы, иногда встречающиеся для отступов, и конечные пробелы, в том числе вертикальные для символа CR, который обычно встречается в ini-файлах MS Windows.
На входе типа:
[default]
[profile automation]
[profile a b]
[profile c d ]
Дает:
default
automation
a b
c d