linux - 从很长的行中提取多个子字符串
问题描述
我有很长的格式文本:
http://address1/user1=username1;ip1=ipaddres1;password1=pass1;some text;http://address2/user2=username2;ip2=ipaddress2;password2=pass2;some text;...etc
我如何从这一行中提取用户名(部分在 user1=、user2= 之后)和 ip 地址(部分在 ip1=、ip2= 之后)(一行中有 20 多个用户名和 ip 地址)并将它们放在两个文件中(user. txt,ip.txt)?
谢谢
解决方案
您可以使用grep
查找匹配的部分并cut
删除之前的内容=
:
grep -o 'user[0-9]=[^;]*' input.txt | cut -d= -f2- > user.txt
grep -o 'ip[0-9]=[^;]*' input.txt | cut -d= -f2- > ip.txt
-o
只打印匹配的部分。如果同一行上有多个匹配项,则将它们打印到单独的行中。
推荐阅读
- python - postgresql COPY TABLE 不包括表行
- flask - Heroku Flask .json() 不工作 500 错误
- r - R:将具有不同行信息的列拆分为多列
- html - 如何使用 CSS 获得带有边框半径的部分圆形边框?
- maven - GitHub 缓存与子目录中的 Maven 项目
- mysql - SQL - 按同一张表中的 3 列分组,平均
- haskell - Haskell 将 Char 类型转换为自定义类型 Field
- assembly - 是什么决定了使用 NASM mov 指令进出寄存器的存储或检索内存的大小?
- python - Django主键前缀和长度
- sas - 遍历字符列表以导入 xlsx 文件 SAS