Какая команда оболочки linux возвращает часть строки? [дубликат]
этот вопрос уже есть ответ здесь:
- извлечь подстроку в Bash 20 ответов
Я хочу найти команду linux, которая может вернуть часть строки. В большинстве языков программирования, это . Есть ли у bash какая-либо команда, которая может быть использована для этой цели. Я хочу быть в состоянии сделать что-то вроде этого...
substr "abcdefg" 2 3
печать cde
.
последующий аналогичный вопрос:
6 ответов:
если вы ищете программу оболочки, чтобы сделать что-то подобное, вы можете использовать .
, чтобы взять ваш пример, попробуйте:
echo "abcdefg" | cut -c3-5
, который дает
cde
здесь
-cN-M
говорит команду "вырез", чтобы возвращать столбцыN
доM
включительно.
С главной страницы bash:
${parameter:offset} ${parameter:offset:length} Substring Expansion. Expands to up to length characters of parameter starting at the character specified by offset. [...]
или, если вы не уверены в наличии
bash
рассмотрите возможность использованияcut
.
в "чистом" bash у вас есть много инструментов для (sub)манипуляции со строками, в основном, но не исключительно в расширения параметр:
${parameter//substring/replacement} ${parameter##remove_matching_prefix} ${parameter%%remove_matching_suffix}
индексированное расширение подстроки (специальные поведения с отрицательными смещениями и, в более новых Башах, отрицательные длины):
${parameter:offset} ${parameter:offset:length} ${parameter:offset:length}
и, конечно же, очень полезные расширения, которые работают на том, является ли параметр null:
${parameter:+use this if param is NOT null} ${parameter:-use this if param is null} ${parameter:=use this and assign to param if param is null} ${parameter:?show this error if param is null}
они имеют больше настраиваемых моделей поведения, чем те, которые перечислены, и как я сказал, есть и другие способы манипулирования строками (общим является
$(command substitution)
в сочетании с sed или любым другим внешним фильтром). Но, они так легко найти, набравman bash
что я не считаю, что это заслуживает дальнейшего расширения этого поста.
в bash, вы можете попробовать это:
stringZ=abcABC123ABCabc # 0123456789..... # 0-based indexing. echo ${stringZ:0:2} # prints ab
больше образцов в Проект Документации Linux