Как извлечь символы из имени файла [duplicate]

Этот вопрос уже имеет ответ здесь: Как файл cat с лимитом печатных символов из каждой строки? 2 ответа

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

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

4 ответа

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

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

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

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

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

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

Последующее наблюдение:

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

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

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

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

1
ответ дан 22 May 2018 в 15:38
  • 1
    и если я хочу grep от персонажа 10 до 18? Каково правило? – Krsztr 10 January 2018 в 15:22
  • 2
    См. Мое редактирование. Сначала вам нужно пропустить первые 9 символов, используя сначала lookbehind, а затем сопоставить любое количество символов, которые вы хотите показать. – Byte Commander 10 January 2018 в 15:58

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

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

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

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

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

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

Последующее наблюдение:

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

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

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

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

1
ответ дан 17 July 2018 в 23:26

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

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

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

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

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

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

Последующее наблюдение:

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

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

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

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

1
ответ дан 24 July 2018 в 13:57

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

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

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

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

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

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

Последующее наблюдение:

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

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

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

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

1
ответ дан 24 July 2018 в 17:02

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

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