Как использовать ${var//Pattern/Replacement}
для замены вкладки пробелом?Заменить вкладку пробелом с помощью замены параметра Bash
${var//\t/ }
не работает для меня.
Как использовать ${var//Pattern/Replacement}
для замены вкладки пробелом?Заменить вкладку пробелом с помощью замены параметра Bash
${var//\t/ }
не работает для меня.
Вам необходимо ввести фактический символ табуляции:
var=${var///}
^that's really meant to be a TAB character
but might not be visible on this site
В командной строке, , чтобы вставить символ табуляции, пресс управленияvTAB.
\ t не символизирует TAB в bash regex.
${var//$(echo -e "\t")/ }
Добавление сюда, так как ввод фактического символа табуляции через PuTTY в оболочку bash не так прост. CTRL
V
TAB
не работает с CTRL
V
запечатлен в окнах как паста.
Вместо этого я использовать:
${var//$'\t'/ }
Пример:
$ var="te"$'\t'"st"
$ echo $var
te st
$ echo ${var//$'\t'/i}
teist
Можете показать 'echo '$ var' '(фактически испускающий вкладку), vs' echo $ var' (разделение строк и, таким образом, передача каждой стороны в качестве отдельного аргумента в 'echo', разделяя таким образом только пробелы). Аналогично, 'echo '$ {var // $' \ t '/ i}" 'не может ничего исправить с текущим/известным значением' var' и здравомыслящей IFS, но это более безопасная практика для людей, чтобы копировать и использовать в другом месте. –
'эхо -e' может или не может делать то, что вы хотите. Некоторые реализации могут печатать «-e» как часть их вывода. 'printf '\ t'' гораздо более портативен. –
Не только некоторые реализации, но даже bash в некоторых режимах (т. Е. Если установлены флаги времени исполнения 'xpg_echo' и' posix'). Если вы * сделали * хотите заменить команду, 'printf '\ t'' будет более надежным. –
(Кроме того, это не «bash regex» - это выражение fnmatch/glob). –