Я вижу, что LSB включает и Perl и Python... Python, по крайней мере, включает http инструменты в стандартную библиотеку. Я не занимался расследованиями, чтобы видеть, передает ли LSB под мандат libwww-perl.
Если Вы не хотите писать что-нибудь сами, и Вы довольны выводом к stdout
, можно сделать это:
python -murllib http://example.com/
И если Вы чувствуете себя действительно мотивированными, можно записать простому http клиенту в ударе.
Звуки мне Вы хотите удалить вещи между \[
и \]
:
$ shopt -s extglob
$ printf '%s\n' "${PS1//\\\[*(\\[^]]|[^\\])\\\]/}"
(\u@\h)-(\t)-(\w)${git_branch}\n$
Однако bash
замена так неэффективна, что Вы, вероятно, были бы более обеспеченным увольнением perl
или sed
здесь, или сделайте это в цикле как:
p=$PS1 np=
while :; do
case $p in
(*\\\[*\\\]*) np=$np${p%%\\\[*};p=${p#*\\\]};;
(*) break;;
esac
done
np=$np$p
printf '%s\n' "$np"
(это - стандартный POSIX sh синтаксис выше, BTW).
И если Вы хотите расширенную подсказку от этого:
ep=$(PS4=$np;exec 2>&1;set -x;:); ep=${ep%:}
После некоторого руководства от jordanm (и чтение раздела "Pattern Matching" страницы справочника удара), оказывается, что эти шаблоны, используемые расширением параметра, не являются regex. Однако для моего конкретного случая, если shopt extglob
идет, я могу сделать:
search='\\\[\\033\[*([0-9])m\\\]'
где *([0-9])
совпадает с [0-9]*
в regex.
Кажется, что extglob обеспечивает некоторые механизмы, подобные regex с (из страницы справочника удара):
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
extglob
реализует подмножество ksh
расширенные шарики. ksh93
на самом деле имеет printf оператор для преобразования между шаблонами и (AT&T) REs (printf '%P\n' '\\\[[0-9]*\\\]'
дает *\\\[*([0-9])\\\]*
)
– Stéphane Chazelas
28.08.2013, 13:03
Pure Bash поддерживает полный набор последовательностей ANSI
# Strips ANSI CSI (ECMA-48, ISO 6429) codes from text
# Param:
# 1: The text
# Return:
# &1: The ANSI stripped text
strip_ansi() {
shopt -s extglob
printf %s "${1//$'\e'[@A-Z\[\\\]\^_]*([0-9:;<=>?])*([ \!\"#$%&\'()\^*+,\-.\/])[@A-Z\[\\\]\^_\`a-z\{|\}~]/}"
}
[
и]
.спасибо! – Drav Sloan 28.08.2013, 12:18