Bash: Как я могу удалить символы из строки, пока не нажму конкретный символ

Escribí esas direcciones IP y nombres de host nuevamente en el archivo de hosts y ahora funciona. Debe tener alguna codificación de caracteres que estaba mal. ¡No sé cómo porque todos fueron copiados y pegados desde la terminal!

1
29.07.2019, 00:11
1 ответ

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

before_the_first_space="${Var1%% *}"
after_the_first_space="${Var1# *}"
before_the_last_space="${Var1%* }"
after_the_last_space="${Var1##* }"

В качестве альтернативы можно воспользоваться разбиением на слова при подстановке переменных без кавычек. Это обрабатывает каждую последовательность пробелов как разделитель и помещает результат в массив.set -fотключает расширение подстановочных знаков , set +fснова включает его.

set -f
parts=($Var1)
set +f
echo "${parts[0]}"

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

read -r -a parts <<<"$Var1"

Метод подстановки -без кавычек и метод readразделяются на основе значенияIFS.

4
27.01.2020, 23:22

Теги

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