У меня есть такая строка:
|abcdefg|
И я хочу получить новую строку, называемую каким-либо образом (например, string2) с исходной строкой без двух |
символов в начале и в конце, чтобы у меня было следующее:
abcdefg
Это возможно в bash?
bash
command-line
scripts
Маттео Пальяцци
источник
источник
awk -F\| '{ print $2 }' <<<"|string|"
awk
решения. Мне нужно учитьсяawk
.IFS='|' read string2 <<< $string
:)"${string:1:-1}"
man bash
.Вот решение, которое не зависит от длины строки (bash):
источник
Если отбросить несколько постов, перечисленных здесь, кажется, что самый простой способ сделать это:
редактировать: работает на Ubuntu с Bash 4.2; не работает на centOS с bash 4.1
источник
Другой способ - использовать
head
&tail
команды:источник
[something something]
с целью сократить скобки, поэтомуecho "[something something]" | tail -c +2 | head -c -2
сработало. Спасибо за совет!echo -n "|abcdefg|" | tail -c +2 | head -c -1
. Я не уверен, почему мои изменения были отклонены ... Это очень грустно, если честно. Болееman head
подробная информацияИ еще один:
источник
Вы также можете использовать Sed для удаления | не просто ссылаться на сам символ, а использовать позиционные ссылки, как в:
Где ':' - разделители (вы можете заменить их на / или любой символ, отсутствующий в запросе, любой знак, следующий за символом s, сделает это) Здесь ^ (символ вставки) означает в начале строки ввода, а $ (доллар) означает в конце. . (точка), что это после каретки, а тот, что перед знаком доллара, представляет один символ. Другими словами, мы удаляем первый и последний символы. Имейте в виду, что это удалит любые символы, даже если | его нет в строке.
EX:
источник
функция оболочки
Немного более многословный подход, но он работает с любым видом первого и последнего символа, не обязательно должен быть одинаковым. Основная идея заключается в том, что мы берем переменную, читаем ее символ за символом и добавляем только те, которые хотим, к новой переменной
Вот вся эта идея, отформатированная в хорошую функцию
И вот та же самая функция в действии:
питон
или в командной строке:
AWK
Рубин
источник
Небольшое и универсальное решение:
Особый в этом случае и допускающий, что '|' персонаж может быть там или нет:
источник
С http://tldp.org/LDP/abs/html/parameter-substitution.html
источник