SED: Strip Take Квадратные кронштейны

Вам необходимо завершить процесс, чтобы освободить дисковое пространство . В будущем вы можете обрезать файл с помощью

    echo "" > file_name

вместо удаления файла, если файл используется каким-либо запущенным процессом.

1
30.01.2019, 11:00
2 ответа

Обратная косая черта внутри выражения в квадратных скобках является буквальным. Вы хотите [^]]. Ваше выражение [^\]]*будет соответствовать обратной косой черте, отличной от -, за которой следует необязательный ].

$ sed -En 's/^\[(.* )?([^]]*)\]$/\2/p' file
default
automation
qa

Это позволяет использовать необязательные слова, оканчивающиеся пробелом, в качестве первой подстроки внутри [...], например. [group name]. Строка после этих необязательных слов, до ], фиксируется во второй группе.

Печать каждой строки по умолчанию отключена с помощью -nи вместо этого мы печатаем явно после каждой успешной замены.

Нам нужно -E, так как модификатор ?является расширенным модификатором регулярного выражения.

Без -Eвы можете использовать \{0,1\}вместо?(и изменить захват (и )на \(и \)соответственно ).

2
27.01.2020, 23:31

С 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
0
27.01.2020, 23:31

Теги

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