Как извлечь символы из имени файла [дубликат]

У меня есть список, содержащий имена файлов. Как мне создать новый список, содержащий только первые 4 символа каждой строки?

0
задан 10 January 2018 в 13:22

1 ответ

Вы можете использовать grep, чтобы показывать только первые (до) 4 символов в каждой строке:

grep -Eo '^.{,4}' /PATH/TO/FILE

-E включает расширенные регулярные выражения, которые необходимы для квантификатора фигурных скобок здесь .
-o заставляет grep выводить только соответствующую часть, а не всю строку, на которой она была найдена

Шаблон ^.{,4} соответствует в начале строки (^) последовательности, состоящей из любого символ (.) и длиной до 4 символов ({,4}).

Чтобы сохранить выходные данные в виде файла, просто используйте перенаправление:

grep -Eo '^.{,4}' /PATH/TO/FILE > /PATH/TO/OUTPUT-FILE

Продолжение:

Для универсального шаблона, соответствующего определенному диапазону (от x- рассмотрим этот пример, который отображает с 10-го по 18-й символ каждой строки:

$ echo 123456789abcdefghij | grep -Po '(?<=^.{9}).{8}'
abcdefgh

Это достигается путем пропуска 9 первых символов без их сопоставления с использованием так называемых взгляд назад ((?<=...)). Эта особенность не включена в расширенные регулярные выражения, понятные grep, поэтому нам нужно -P вместо того, чтобы включить PCRE.

После того, как пропущено ровно 9 символов, оно соответствует следующим ровно 8 символам. Если строка короче, она не будет совпадать. Чтобы снова сопоставить до 8 символов, как в первой части этого ответа, напишите {,8} вместо {8}.

1
ответ дан 10 January 2018 в 13:22

Другие вопросы по тегам:

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