Bash获取字符串值

时间:2018-03-11 15:34:21

标签: bash

我必须从配置文件中获取网络设备的主机名。该文件看起来像:

...
hostname=T14Z18
ipaddress=192.168.0.1
...

如何做到这一点?我正在进入机器。

3 个答案:

答案 0 :(得分:3)

使用简单的 awk 命令:

awk -F'=' '$1 == "hostname"{ print $2; exit }' configfile

答案 1 :(得分:3)

像这样使用grepcut

$ grep '^hostname=' configfile  | cut -d= -f2
T14Z18

您还可以将上述内容与ssh中的Bash命令结合使用:

$ ssh "$(grep '^hostname=' configfile | cut -d= -f2)"

$()之间的所有内容都将被括号内的命令输出所取代,因此它与您手动键入ssh T14Z18的内容相同。 此功能称为command substitutionBash

另请注意,您可能使用的OpenSSH有自己的配置 存储在~/.ssh/config中,您可以使用它来创建别名。对于 例如,以下条目创建一个名为rpi的别名:

Host rpi
User pi
Hostname 192.168.1.161

您现在只需执行ssh rpi即可找到用户名和主机名 由OpenSSH客户自动生成。如果您的网络中有DNS服务器,您当然可以在您的示例中使用主机名,例如T14Z18而不是IP地址。

答案 2 :(得分:2)

如果-P regex 切换已实施,则 -

grep -oP 'hostname=\K.*' configfile
                   __
                    ^
                    |

重新开始匹配技巧

Support of \K in regex