Обычно я делаю общую фильтрацию по строкам следующим образом:
criterion = lambda row: row['countries'] not in countries
not_in = df[df.apply(criterion, axis=1)]
Я не знаю ни о какой утилите для цветной печати себя, но можно сделать это легко с функцией оболочки как это:
# colorize stdin according to parameter passed (GREEN, CYAN, BLUE, YELLOW)
colorize(){
GREEN="\033[0;32m"
CYAN="\033[0;36m"
GRAY="\033[0;37m"
BLUE="\033[0;34m"
YELLOW="\033[0;33m"
NORMAL="\033[m"
color=\${1:-NORMAL}
# activate color passed as argument
echo -ne "`eval echo ${color}`"
# read stdin (pipe) and print from it:
cat
# Note: if instead of reading from the pipe, you wanted to print
# the additional parameters of the function, you could do:
# shift; echo $*
# back to normal (no color)
echo -ne "${NORMAL}"
}
echo hi | colorize GREEN
, Если Вы хотите проверить другие цвета, смотрите на этот список . Можно добавить поддержку любого цвета оттуда, просто создав дополнительную переменную в этой функции с корректным именем и значением.
Я создал эту функцию, которую я использую в сценариях удара.
# Function to echo in specified color echoincolor () { case $1 in "red") tput setaf 1;; "green") tput setaf 2;; "orange") tput setaf 3;; "blue") tput setaf 4;; "purple") tput setaf 5;; "cyan") tput setaf 6;; "gray" | "grey") tput setaf 7;; "white") tput setaf 8;; esac echo "$2"; tput sgr0 }
Затем я просто называю его как это echoincolor green "This text is in green!"
, Кроме того , использую printf
# Function to print in specified color colorprintf () { case $1 in "red") tput setaf 1;; "green") tput setaf 2;; "orange") tput setaf 3;; "blue") tput setaf 4;; "purple") tput setaf 5;; "cyan") tput setaf 6;; "gray" | "grey") tput setaf 7;; "white") tput setaf 8;; esac printf "$2"; tput sgr0 }
Затем просто вызов он как это colorprintf green "This text is in green!"
, Примечание , echo
обеспечивает запаздывающую новую строку, в то время как printf
не делает.
Я использую этот старый сценарий, hilite.pl имен, взятый от сети, уже с "неизвестным автором" строка!
#!/usr/bin/perl -w
### Usage: hilite <ansi command> <target string>
### Purpose: Will read text from standard input and perform specified highlighting
### command before displaying text to standard output.
### License: GNU GPL
# unknown author
$|=1; # don't buffer i/o
$command = "$ARGV[0]";
$target = "$ARGV[1]";
$color = "\e[" . $command . "m";
$end = "\e[0m";
while(<STDIN>) {
s/($target)/$color$1$end/;
print Я использую этот старый сценарий, hilite.pl имен, взятый от сети, уже с "неизвестным автором" строка!
[110] Затем я могу использовать его в каналах, к выводу журнала "hilite" или другим вещам, с помощью regexp/PCRE:
echo 'hello color world!!' | hilite.pl 34 "[Hh]el[^ ]*" | hilite.pl 43 .orld | hilite.pl 32 "\scolor\s"
Это нарисует привет в синем, раскрасит зеленый и мир в желтом фоне
, Вы видите список цветов с (можно развернуть выражение удара до {01.. 255}, если Вы хотите):
for i in {01..10} {30..49} {90..110} ; do echo $i | hilite.pl $i $i ; done
;
}
Затем я могу использовать его в каналах, к выводу журнала "hilite" или другим вещам, с помощью regexp/PCRE:
echo 'hello color world!!' | hilite.pl 34 "[Hh]el[^ ]*" | hilite.pl 43 .orld | hilite.pl 32 "\scolor\s"
Это нарисует привет в синем, раскрасит зеленый и мир в желтом фоне
, Вы видите список цветов с (можно развернуть выражение удара до {01.. 255}, если Вы хотите):
for i in {01..10} {30..49} {90..110} ; do echo $i | hilite.pl $i $i ; done
Существует намного более изящный ответ, чем любой из них:
sudo apt-get install grc
(который также устанавливает grcat
)
Теперь выполнитесь:
echo "[SEVERE] Service is down" | grcat ~/conf.username
, Где conf.myusername
содержит:
regexp=SEVERE
colours=on_red
count=more
(по некоторым причинам я не могу найти право regexp для "всего между кавычками")