regex - 在 bash 中使用正则表达式过滤文件中的数据
问题描述
我喜欢创建批处理脚本,该脚本将对从文件中提取的变量执行一些任务。
我试图找到一些正则表达式,或者说多个正则表达式,因为我需要很少的变量。
我在 bash 中读取了具有以下内容的文件:
username [mutiple spaces] = User Name [mutiple spaces] <u.name@domain.com>
我喜欢做的是:
- 获取用户名:'用户名'
- 获取全名:'用户名'
- 获取电子邮件:'u.name@domain.com'
如上所述,我尝试将所有详细信息分成多个(三个) 变量
我现在拥有的是:
input="svn_usernames.txt"
while IFS= read -r line
do
#USERNAME=$(echo "$line" | awk '{print $1}')
#echo $USERNAME
echo "$line" | perl -pe '/\s\s+/g and / /g'
done < "$input"
解决方案
好的,我会做一些假设。
1) There WILL be spaces before *AND* after the equals
2) "username" is a login id
3) the user's actual name might have multiple fields - given name, surname, etc.
4) the email is JUST the email inside angle brackets.
有了这些,
input="svn_usernames.txt"
while read -a line && (( ${#line[@]} )) # while can read a row
do username="${line[0]}" # assign 1st to username
email="${line[-1]//[<>]/}" # last to email w/o <>
name="${line[@]:2:$(( ${#line[@]} - 3 ))}" # all between to name
echo "username:[$username] name=[$name] email=[$email]"
done < "$input"
推荐阅读
- fabricjs - Fabric.js - fabric.loadSVGFromURL 给出 TypeError: n.reviver is not a function
- php - php检查数组是否有确定的值
- javascript - 如何使用 Javascript 在列表中呈现组号?
- javascript - 如何访问回调侦听器之外的数组元素
- javascript - 来自firebase的displayName返回null,直到我刷新应用程序一次
- c++ - XAudio2Create 更新后失败 2021/4/20
- javascript - File System Access API: how to send a fileHandle with postMessage?
- java - 如何使用 Scala 递归旋转 90 度非对称矩阵
- visual-studio-code - 更改终端 VSCode 中的字母间距
- python - 使用 Kera val_acc 静态值进行图像分类