使用 shell 脚本获取字符串的一部分

Str*_*Hat 4 shell string shell-script

我有一个字符串

/ip/192.168.0.1/port/8080/
Run Code Online (Sandbox Code Playgroud)

我想获得两个单独的变量,它们将包含端口和 IP

喜欢。192.168.0.18080

据我所知 /ip/ 和 /port/ 会一直存在我得到的 Ip 如下,

expr /ip/192.168.0.1/port/8080/ : '/ip/\(.*\)/port/' 
Run Code Online (Sandbox Code Playgroud)

这将输出192.168.0.1 只是不知道如何获取端口,我尝试了类似的命令,

expr /ip/192.168.0.1/port/8080/ : '/port/\(.*\)/' 
Run Code Online (Sandbox Code Playgroud)

但它没有给出端口 .. 如何获取端口。

Pan*_*dya 6

您可以简单地使用cut如下:

cut -d '/' -f 3,5
Run Code Online (Sandbox Code Playgroud)

例子:

$ echo '/ip/192.168.0.1/port/8080/' | cut -d '/' -f 3,5
192.168.0.1/8080
Run Code Online (Sandbox Code Playgroud)

这将使用分隔符进行剪切/并打印第 3 和第 5 个字段。

或者您可能想要以下内容:

$ echo ip=`cut -d '/' -f 3 input_file` port=`cut -d '/' -f 5 input_file`
ip=192.168.0.1 port=8080
Run Code Online (Sandbox Code Playgroud)


小智 3

您可以使用 awk:

awk -F\/ '{print $2"="$3, $4"="$5}' input_file

使用输入文件或逐行进行。