如何将正则表达式应用于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 中测试)
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 中测试)