如何筛选status非open/Open的tt文件并输出对应owner信息
单行命令解决方案
直接用bash循环搭配grep和awk就能实现需求,单行命令如下:
for f in *.tt; do status=$(grep -i 'status' "$f" | awk -F'[<>]' '{print $3}'); if [[ ! "${status,,}" = "open" ]]; then owner=$(grep 'owner' "$f" | awk -F'[<>]' '{print $3}'); echo "文件: $f | 状态: $status | 所有者: $owner"; fi; done
命令细节说明
- 遍历当前目录下所有
.tt文件:for f in *.tt - 提取
status值:默认适配<status>值</status>格式,若你的标签是status: 内容这类格式,把awk -F'[<>]' '{print $3}'替换成awk -F': ' '{print $2}'即可 - 忽略大小写排除open状态:通过
${status,,}将提取到的状态值转为小写,确保Open也能被正确过滤 - 提取并输出对应
owner信息:同样适配<owner>值</owner>格式,格式可根据需求修改echo后的字符串
内容的提问来源于stack exchange,提问作者Richard Olsson
相关产品推荐
相关产品推荐

