使用shell命令从URL字符串中打印值

时间:2017-08-24 10:45:16

标签: bash shell sed

我在文件中有一个URL字符串(例如http://10.58.206.10:20002/job-cache/job/548)。从这个字符串我只需要打印IP地址值(即10.58.206.10)。

此IP地址会经常变化,因此我需要将其视为“http://之后和:20002之前的值”。为此,我使用grepsed,如下所示,但我无法获得确切的值。

grep -i "Result URL:" taf.log | sed 's/^.*http://'

4 个答案:

答案 0 :(得分:2)

您可以避免grep使用单个sed

sed -E '/Result URL:/s~.*http://([^:]+):.*~\1~' taf.log

答案 1 :(得分:0)

这将完全匹配IP地址:

grep "Result URL" taf.log |egrep -o "([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}" 

编辑:这应该为你做。它仅在匹配“结果URL”字符串时打印IP地址。

答案 2 :(得分:0)

echo http://10.58.206.10:20002/job-cache/job/548 | cut -d"/" -f3 | cut -d":" -f1 >> taf.log

它也适用于没有端口号的情况:

echo http://10.58.206.10/job-cache/job/548 | cut -d"/" -f3 | cut -d":" -f1 >> tap.log

所以它更普遍。使用sed,echo,tr,xargs和cut一起为bash提供非常强大的一个衬里。 xargs是顺序命令最强大的。

答案 3 :(得分:0)

请你试着跟我一起,让我知道这是否有帮助。

echo "http://10.58.206.10:20002/job-cache/job/548" | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]/);print substr($0,RSTART,RLENGTH)}' Input_file

或者,如果您正在读取Input_file中的值,那么您可以尝试使用。

awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]/);print substr($0,RSTART,RLENGTH)}'  Input_file