我只是想知道如何编写一个 shell 脚本来将代理 IP 与其端口分开。
代理以这种格式存储
ip:port
ip:port
ip:port
如何使用 shell 脚本将冒号左侧的 IP 与右侧的端口分开,并将 IP 和端口列表以相同的顺序放在单独的 .txt 文件中?这甚至可能吗?
如果代理在文件中以这种方式列出,比如 proxy.txt,那么您只需要cut
:
cut -f1 -d: proxy.txt > proxy_ip.txt
cut -f2 -d: proxy.txt > proxy_port.txt
尝试这样的事情:
#!/bin/bash
ips="1.2.3.4:123 2.3.4.5:356 4.5.6.7:576"
# or get IPs from stdin
# split them
ips_array=($ips)
for w in ${ips_array[@]}
do
echo $w | sed -e 's/:.*$//g' >> ips.txt
echo $w | sed -e 's/^.*://g' >> ports.txt
done
关键是使用($ips)
来拆分列表。
编辑:
我刚刚意识到你没有正确格式化你的问题,所以它不是一行 IP:PORTs 用空格分隔的,而是一个单独的一行。你只需要这个:
#!/bin/bash
while read w
do
echo $w | sed -e 's/:.*$//g' >> ips.txt
echo $w | sed -e 's/^.*://g' >> ports.txt
done
你从标准输入读取。