regex 正则表达式来匹配一系列可打印的字符,这些字符可能有一个空格并以/结尾

cetgtptt  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(107)

本质上,我想做的是自制的ls着色器。ls --color=auto在我的网络驱动器上运行得非常慢。我想做的是运行ls --color=never --file-type -C并搜索目录(用尾随的/标记),然后添加控制字符来添加颜色。
文件/文件夹名称中可以有符号、数字、字母和一个或多个空格,但不能有连续的空格。文件/文件夹之间的分隔符是一定数量的制表符和/或空格。文件名永远不会以空格开头,但可以以符号开头,特别是下划线。
我现在有点sorta工作,但偶尔错过的东西,它应该匹配,偶尔匹配的东西,它不应该。

/bin/ls --color=never --file-type -aFC | 
sed -e 's/[\t ][[:print:]]*\//\e[34m&\e[37m' | 
sed -e 's/^[[:print:]]*\//\e[34m&\e[37m'

字符串
在下面的列表中:
./ 02_Sidescan/ 05_UHRS/ 08_SVP/ SPL_Run/ ../ 03_SBP/ 06_MAG/ 09_Tide/ Tide_Run/ 01_Navigation/ 04_Multibeam/ 07_DelayedHeave/ DelayedHeave_Run/
一切都应该是蓝色的,但08_SVP,09_Tide,SPL_Run和Tide_Run都错过了。我不知道这是为什么。有人能帮忙吗?此外,我需要的模式,以不匹配连续的空间。
这是在WSL中运行的Ubuntu上,使用最新版本的ksh 93(u+m 1.0.6)。
谢谢你,谢谢
编辑添加文本示例:
输入文本:

./              02_Sidescan/   05_UHRS/          08_SVP/            SPL_Run/
../             03_SBP/        06_MAG/           09_Tide/           Tide_Run/
01_Navigation/  04_Multibeam/  07_DelayedHeave/  DelayedHeave_Run/


sed命令:

sed -e 's/^[[:print:]]*\//_&_/; s/[     ][[:print:]]*\//_&_/'


sed的输出:

_./_    _       02_Sidescan/   05_UHRS/_                 08_SVP/            SPL_Run/
_../_   _       03_SBP/        06_MAG/_          09_Tide/           Tide_Run/
_01_Navigation/__       04_Multibeam/  07_DelayedHeave/  DelayedHeave_Run/_

l5tcr1uw

l5tcr1uw1#

1.你可能不需要两个箱子。
1.您没有使用g标志,因此仅更改了任何行上的第一个匹配。

/bin/ls --color=never --file-type -aFC | 
sed $'s/[[:print:]]*\\//\e[34m&\e[37m/g'

字符串
不可能可靠地区分以空格开头的目录名和不以空格开头但前面有列空格的目录名。
如果我们假设目录名不以空格开头,则具有较少误报的方法是:

/bin/ls --color=never --file-type -aFC | 
sed -E $'s/([[:graph:]]+ ?)+\\//\e[34m&\e[37m/g'

相关问题