bash:从带有 ANSI 代码的字符串中发出 n 个可打印字符

汤姆·黑尔

在 中bash,给定一个包含ANSI CSI 代码(例如颜色)的任意字符串,我如何发出以正确颜色打印的可打印字符的子集?

例如,给定:

s=$'\e[0;1;31mRED\e[0;1;32mGREEN\e[0;1;33mYELLOW'

在此处输入图片说明

我该怎么做:

coloursubstr "$s" 0 5 

在此处输入图片说明

coloursubstr "$s" 2 7 

在此处输入图片说明

居鲁士

使用 bash 和 GNU grep:

coloursubstr() {
  local string="$1" from="$2" num="$3"
  local line i array=()

  # fill array
  while IFS= read -r line; do
    [[ $line =~ ^([^m]+m)(.*)$ ]]
    for ((i=0;i<${#BASH_REMATCH[2]};i++)); do
      array+=("${BASH_REMATCH[1]}${BASH_REMATCH[2]:$i:1}")
    done
  done < <(grep -Po $'\x1b.*?m[^\x1b]*' <<< "$string")

  # print array
  for ((i=$from;i<$from+$num;i++)); do
    printf "%s" "${array[$i]}"
  done
  echo
}

s=$'\e[0;1;31mRED\e[0;1;32mGREEN\e[0;1;33mYELLOW'

coloursubstr "$s" 0 5
coloursubstr "$s" 2 7

输出:

红宝石
格林尼

我假设所有颜色代码都以 开头\e,以 结尾,m并且文本以颜色代码为前缀。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在N个可打印字符后截断彩色线

来自分类Dev

如何打印可打印字符和'\ n','\ t'等字符

来自分类Dev

C ++打印字符串n次之间有空格?

来自分类Dev

从字符串中删除所有ANSI颜色/样式

来自分类Dev

Java:带有ANSI转义码的Json字符串到对象

来自分类Dev

带有空字符串替换字符的php preg_replace在非可打印字符上不起作用

来自分类Dev

ANSI 代码在字符串的 ndarray 中不起作用

来自分类Dev

打印字符串中的所有字符

来自分类Dev

有没有办法在O(n)的时间内打印字符串的所有子字符串?

来自分类Dev

python:如何从带有unicode字符串的变量中打印字符

来自分类Dev

带有Unicode转义字符的Python打印字符串

来自分类Dev

python:如何从带有unicode字符串的变量中打印字符

来自分类Dev

将带有不可打印字符的六进制字符串传递给a

来自分类Dev

在bash中以JSON格式打印字符串

来自分类Dev

如何打印彩色的ANSI字符?

来自分类Dev

按单词打印字符串的所有排列

来自分类Dev

如何在Bash(Linux)或Python上仅过滤文件中的可打印字符?

来自分类Dev

使用带有可变参数(va_list)的函数打印字符串

来自分类Dev

有没有办法使用python定位并打印字符串中最长的三个单词?

来自分类Dev

AWK打印字符串+bash变量+字符串的组合

来自分类Dev

是否有规则匹配parboiled2中的unicode可打印字符?

来自分类Dev

使用Python 2.7.x中的所有可打印字符对IP地址进行编码

来自分类Dev

是否有规则匹配parboiled2中的unicode可打印字符?

来自分类Dev

哈希冲突示例(可打印字符串)

来自分类Dev

C-使用printf原始打印字符串中所有不可打印的字符

来自分类Dev

带有bash的Yaml:在字符串中转义引号

来自分类Dev

带有子字符串条件的Bash while循环

来自分类Dev

bash中带有花括号的字符串操作

来自分类Dev

带有包含空格的字符串 var 的 Bash for 循环

Related 相关文章

  1. 1

    在N个可打印字符后截断彩色线

  2. 2

    如何打印可打印字符和'\ n','\ t'等字符

  3. 3

    C ++打印字符串n次之间有空格?

  4. 4

    从字符串中删除所有ANSI颜色/样式

  5. 5

    Java:带有ANSI转义码的Json字符串到对象

  6. 6

    带有空字符串替换字符的php preg_replace在非可打印字符上不起作用

  7. 7

    ANSI 代码在字符串的 ndarray 中不起作用

  8. 8

    打印字符串中的所有字符

  9. 9

    有没有办法在O(n)的时间内打印字符串的所有子字符串?

  10. 10

    python:如何从带有unicode字符串的变量中打印字符

  11. 11

    带有Unicode转义字符的Python打印字符串

  12. 12

    python:如何从带有unicode字符串的变量中打印字符

  13. 13

    将带有不可打印字符的六进制字符串传递给a

  14. 14

    在bash中以JSON格式打印字符串

  15. 15

    如何打印彩色的ANSI字符?

  16. 16

    按单词打印字符串的所有排列

  17. 17

    如何在Bash(Linux)或Python上仅过滤文件中的可打印字符?

  18. 18

    使用带有可变参数(va_list)的函数打印字符串

  19. 19

    有没有办法使用python定位并打印字符串中最长的三个单词?

  20. 20

    AWK打印字符串+bash变量+字符串的组合

  21. 21

    是否有规则匹配parboiled2中的unicode可打印字符?

  22. 22

    使用Python 2.7.x中的所有可打印字符对IP地址进行编码

  23. 23

    是否有规则匹配parboiled2中的unicode可打印字符?

  24. 24

    哈希冲突示例(可打印字符串)

  25. 25

    C-使用printf原始打印字符串中所有不可打印的字符

  26. 26

    带有bash的Yaml:在字符串中转义引号

  27. 27

    带有子字符串条件的Bash while循环

  28. 28

    bash中带有花括号的字符串操作

  29. 29

    带有包含空格的字符串 var 的 Bash for 循环

热门标签

归档