Я не думаю, что существует terminfo возможность этого. На практике, тестируя значение TERM
должно быть достаточно хорошим. Это - то, что я выполняю в моем .bashrc
и .zshrc
, и я не вспоминаю это являющийся проблемой.
case $TERM in
(|color(|?))(([Ekx]|dt|(ai|n)x)term|rxvt|screen*)*)
PS1=$'\e\]0;$GENERATED_WINDOW_TITLE\a'"$PS1"
esac
Как насчет использования awk?
awk -F = '/email2/ { print $2}' /etc/emails.conf
-F =
поля разделены '='
'/ email2 / {print $ 2}'
на строках, которые соответствует «Email2», распечатайте второе поле
perl -nlE 's/email2\s*=\s*// and say' file
Где:
Perl -NL
- это для каждой строки ... S / Email2 = //
Удаляет идентификатор поиска электронной почты И если бы вы могли это сделать ... Скажите
Печатает текущую входную входную линию \ S *
Ноль или больше пробелов (эквивалент [\ \ n] *) Точное , эквивалентное , эквивалентное было бы чем-то вроде:
sed -n '/email2/{s/^[^=]*=\([^=]*\).*/\1/;p;}' < file
, но вы, вероятно, захотите вместо этого:
sed -n 's/^[^=]*email2[^=]*=[[:blank:]]*//p' < file
(это совпадение Email2
Со стороны перед первым =
и верните все справа от первого =
(пропуская ведущие пробелы), не только часть до второго =
Если есть).
Нет необходимости устанавливать для разделителя полей какое-либо специальное значение, такое как "=". По умолчанию AWK использует непрерывные пробелы и табуляции в качестве разделителей полей, которые пропускаются, поэтому интерпретирует каждую строку вашего файла как имеющего три поля, без начального пробела в третьем поле
awk '/^email2/ { print $3 }'
производит
user@winkum.worg
Вышеупомянутое также будет соответствовать любым строкам, начинающимся с email2
, например email20
, точное совпадение, которое вы можете использовать
awk '$1 == "email2" { print $3 }'
Чтобы получить что-то вроде grep | cut
, вы можете использовать sed -n s/A/B/p
.
По умолчанию sed
печатает каждую строку после обработки всех команд. Вы можете отключить весь вывод, который вы явно не печатаете из команды, с помощью sed -n
.
Команда s
принимает форму s/$FIND/$REPLACE/$FLAGS
. В частности, флаг p
печатает строку всякий раз, когда производится замена.
В сочетании с ними вы можете легко совмещать и резать:
sed -nE "s/email2 = (.+)/\1/p" < /etc/emails.conf
На самом деле, это более мощное средство, чем grep | cut
, потому что вы можете использовать произвольный шаблон замены.
(Параметр -E
включает современное регулярное выражение, которое позволяет ссылаться на группы захвата в шаблоне замены. Для простого кроя вы можете обойтись без него, используя более умные узоры.)