1

我只是想知道如何编写一个 shell 脚本来将代理 IP 与其端口分开。

代理以这种格式存储

ip:port
ip:port
ip:port

如何使用 shell 脚本将冒号左侧的 IP 与右侧的端口分开,并将 IP 和端口列表以相同的顺序放在单独的 .txt 文件中?这甚至可能吗?

4

2 回答 2

1

如果代理在文件中以这种方式列出,比如 proxy.txt,那么您只需要cut

cut -f1 -d: proxy.txt > proxy_ip.txt
cut -f2 -d: proxy.txt > proxy_port.txt
于 2013-08-29T02:00:16.943 回答
0

尝试这样的事情:

#!/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

你从标准输入读取。

于 2013-08-28T23:24:39.877 回答