首页 > 解决方案 > 从很长的行中提取多个子字符串

问题描述

我有很长的格式文本:

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)?

谢谢

标签: linuxstringshell

解决方案


您可以使用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只打印匹配的部分。如果同一行上有多个匹配项,则将它们打印到单独的行中。


推荐阅读