如何将正则表达式应用于awk中的特定列

How to apply regex to specific column in awk

la() {
     ls -lhAXF "$@" | awk '
     BEGIN {
         FPAT = "([[:space:]]*[^[:space:]]+)";
     } {
          = "3[1m" "3[31m"  "3[0m";
          = "3[1m" "3[32m"  "3[0m";
          = "3[1m" "3[33m"  "3[0m";
          = "3[34m"  "3[0m";
          = "3[1m" "3[35m"  "3[0m";
          = "3[1m" "3[36m"  "3[0m";
          = "3[1m" "3[37m"  "3[0m";
          = "3[1m" "3[33m"  "3[0m";
         print
     }'
}

这将为 ls -lhAXF 的输出着色 如何使用正则表达式将颜色应用于特定类型的项目,例如我希望文件夹为绿色,.config 文件夹为红色,常规文件为蓝色或类似的东西。

文件夹 - 匹配单词末尾包含“/”的 $9 列 隐藏文件夹 - 匹配包含“.”的 $9 列在单词的开头 常规文件 - $9

列中未匹配的其余文件

如何像 awk 那样将正则表达式应用于特定列? 我正在使用 Debian 11

如何像 awk 中那样将正则表达式应用于特定列?

GNU AWK 中的语法如下

~/pattern/

其中 1 是列数。考虑以下简单示例,令 file.txt

1. ABC
2. 123
3. DEF

然后

awk '{print ~/^[0-9]*$/}' file.txt

输出

0
1
0

说明:这会检查第 2 列 (</code>) 的内容是否仅由数字组成。 <code>^ 表示字段开始,$ 表示字段结束。

(在 GNU Awk 5.0.1 中测试)