我很难理解以下功能。它应该为以 using 开头-
或以{-
using开头的行着色blue
。如何仍然打印不匹配的行?
kls ()
{
rst='tput sgr0'
ctp='tput bold; tput setaf 39'
sed -E "s/^ *\{?-.*/${ctp}; printf '%s' '&';${rst}/e" <<< "$@"
}
我很难理解以下功能。它应该为以 using 开头-
或以{-
using开头的行着色blue
。如何仍然打印不匹配的行?
kls ()
{
rst='tput sgr0'
ctp='tput bold; tput setaf 39'
sed -E "s/^ *\{?-.*/${ctp}; printf '%s' '&';${rst}/e" <<< "$@"
}
您的代码中的两个变量
rst
和ctp
包含 shell 命令。如果您只是让它们包含这些命令的输出会更好,因为它允许我们在您的 GNU调用中将不安全/e
选项删除到替换命令。sed
这个问题似乎是在询问如何避免打印不匹配的行。在这种情况下,您可以通过使用
-n
带有 的选项来执行此操作,该选项sed
会禁用编辑脚本末尾每行的默认输出。然后将/p
选项添加到替换命令,这将导致输出被替换修改的行(不匹配正则表达式的行将不会输出)。为了让它更像一个过滤器,将重定向放到
sed
:你会用这个
或者
或者