regex - 正则表达式 POSIX - 我如何查找行首是否包含来自行中稍后出现的单词中的单词
问题描述
我有一个 UNIX passwd 文件,如果 GECOS 的前 7 个字符在用户名内,我需要使用 egrep 查找。我想检查用户名 (jkennedy) 是否包含 GECOS 中的“kennedy”一词。
我打算使用反向引用,但用户名在 gecos 之前,所以我不知道如何实现它。
例如 passwd 文件包含这一行:
jkennedy:x:2473:1067:kennedy john:/root:/bin/bash
解决方案
假设您不希望区分大小写来破坏您的匹配 -
declare -l tmpUsr tmpName
while IFS=: read usr x x x name x
do tmpUsr="$usr"; tmpName="$name"
(( ${#name} )) && [[ "$tmpUsr" =~ ${tmpName:0:7} ]] &&
printf "$usr ($name<${tmpName:0:7}>)\n"
done</etc/passwd
推荐阅读
- javafx - JavaFX“需要位置。”我已经尝试了所有解决方案
- scala - 是否有使用 Scala+PlaySpec+Mockito 的每次测试非特定模拟重置模式?
- javascript - ES模块导入不起作用
- ansible - 在一个剧本中注册主机之间的变量使用情况
- ssl - 证书链如何呈现给客户端?
- jquery - 无法将 JSP 中的完整表单值发送到 Spring 控制器
- java - 我有两个图像视图,但是当我调用一个图像视图来设置图像时,它们都设置了相同的图像
- angular - Froala 编辑器在 Angular 6 中隐藏图像编辑选项
- python - 在数据框中以特定条件填充日期之间的天数
- ajax - 使用 Django 的 JQueryUI 自动完成搜索不起作用