我需要取机器的主机名并抓住最后一个字符。在此示例中,主机名为:web-01
我想从主机名中获取“1”。此命令也将在web-02等上使用
我的工作非常好:
hostname | awk '{print substr($0,length,1)}'
获得该号码后,我需要更新文件。在这种情况下,我需要更新以下行:
auto_increment_offset = 0
它应该成为:
auto_increment_offset = <the last character of the hostname>
我试图用以下方式完成这部分:
sed -i "/^auto_increment_offset/s/0/$1/" /etc/mysql/conf.d/my.cnf;
我试图运行完整命令:
hostname | awk '{print substr($0,length,1)}' | sed -i "/^auto_increment_offset/s/0/$1/" /etc/mysql/conf.d/my.cnf
由于某种原因,它不起作用,我需要稍微退出一点,所以我想我会寻求帮助。而已。请告诉我,我是一个白痴并协助我完成这项工作。谢谢你的帮助。
答案 0 :(得分:1)
稍微简化了你的命令,这个适用于我:
sed "/^auto_increment_offset/s/=.*/= ${HOSTNAME#${HOSTNAME%?}}/" /etc/mysql/conf.d/my.cnf;
答案 1 :(得分:0)
这可能是你正在寻找的......我只是把你写的东西拿来,并在sed中写了一些sed。我经常使用这种技巧来解决类似的问题 - 即使它不是很简洁。否则gergoerdosi的回答是更好的imo。
hostname | awk '{print substr($0,length,1)}' | sed -e "s%\(.*\)%sed -i \"/^auto_increment_offset/s/0/\1/\" /etc/mysql/conf.d/my.cnf %" | sh