加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Bash中拆分逗号分隔的字符串

发布时间:2020-12-16 01:50:46 所属栏目:安全 来源:网络整理
导读:我有这个文件,里面有20k IP: 104.20.15.220,104.20.61.219,104.20.62.219,104.20.73.221,104.20.74.221,104.20.14.220104.20.15.220,104.25.195.107,104.25.196.107,104.20.14.22091.215.154.209... 问题是如何在每个字符串上拆分为单个IP: 104.20.15.2201
我有这个文件,里面有20k IP:

104.20.15.220,104.20.61.219,104.20.62.219,104.20.73.221,104.20.74.221,104.20.14.220
104.20.15.220,104.25.195.107,104.25.196.107,104.20.14.220
91.215.154.209
...

问题是如何在每个字符串上拆分为单个IP:

104.20.15.220
104.20.61.219

解决方法

只需使用以下任一命令替换带有新行的逗号:

tr ',' 'n' < file

sed 's/,/n/g' file

perl 's/,/n/g' file

awk 'gsub(/,/,"n")' file

…或匹配每个文本块直到逗号或行尾:

grep -oP '.*?(?=,|$)' file

…或者遍历字段并打印它们:

awk -F,'{for(i=1;i<=NF;i++) print $i}' file

…或者将记录分隔符设置为逗号并让awk完成所有工作:

awk -v RS=,'1' file
awk 1 RS=,file

…或匹配IP,您可以使用Matching IPv4 Addresses的正则表达式:

grep -oE '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' file

他们都回归:

104.20.15.220
104.20.61.219
104.20.62.219
104.20.73.221
...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读