我有基于Beaglebone Black的定制板,
我想提取接口eth0的ip地址,并用0替换第四个八位字节
我使用下面的一个班轮来提取ip,
ip addr show eth0 | awk '$1=="inet"{print $2}'
output : 192.168.2.158/24
Expected output : 192.168.2.0/24
然而我无法使第四个八位位组0,我想到使用函数gsub
但是无法获得正确的组合。 :(
我不想在命令中添加更多管道。
有任何建议/指示吗?
还有其他建议吗?
答案 0 :(得分:3)
根据预期输出:替换第四个八位字节。
ip addr show eth0 |awk '/inet / {split($2,a,".");split($2,b,"/");print a[1] "." a[2] "." a[3] ".0/" b[2]}'
142.133.152.0/25
如果是第3个八位字节:
ip addr show eth0 |awk '/inet / {split($2,a,".");print a[1] "." a[2] ".0." a[4] }'
142.133.0.192/25
答案 1 :(得分:2)
使用sed
$ ip addr show eth0 | sed -nE '/^\s*inet\b/ s/^\s*inet\s*(([0-9]+\.){3})[0-9]+(\S+).*/\10\3/p'
192.168.1.0/24
/^\s*inet\b/
仅过滤所需的行s/^\s*inet\s*(([0-9]+\.){3})[0-9]+(\S+).*/\10\3/
捕获数字序列,然后是.
三次,省略下一个数字序列,然后捕获非空格字符。根据要求替换sed -nr
而不是sed -nE
答案 2 :(得分:1)
你可以吗?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.crunchyfashion\.com$
RewriteRule ^/(.*)$ http://www.crunchyfashion.com/%1/$1 [L,R]
答案 3 :(得分:1)
您可以使用0/
替换地址的最后一个八位字节和斜杠:
ip addr show eth0 | awk '$1=="inet"{sub(/[0-9]+\//, "0/", $2); print $2}'