运行 "ip | grep | awk" 在 sed 替换中
Running "ip | grep | awk" within a sed replacement
问题集(Raspberry Pi OS):
我有一个文件 example.conf
,其中包含一行 IPv4addr=XXXXX
。我正在尝试将其更改为在命令
中生成的 IP
ipTest=$(ip --brief a show | grep eth0 | awk '{ print }')
我想在脚本 install.sh
期间自动更改此文件,我尝试的行是:
IPtest=$(ip --brief a show | grep eth0 | awk '{ print }')
sudo sed -e "/IPv4addr/s/[^=]*$/$IPtest/" example.conf
Returns 错误:
sed: -e expression #1, char 32: unknown option to `s'
该代码中的一个简单行有效,例如 SimpleTest='Works'
有什么想法吗?我也对其他解决方案持开放态度,但我不是经验丰富的 linux 用户,所以我使用我知道的工具来处理其他问题集。
您可以缩短变量并允许 awk
同时完成 grep
的工作
IPtest=$(ip --brief a s | awk '/eth0/{print }')
使用sed
分组和反向引用
sed -i.bak "s|\([^=]*.\).*|$IPtest|" example.conf
$IPtest
包含 /
字符;尝试这样的事情:
IPtest=$(ip --brief a show | grep eth0 | awk '{ print }')
sudo sed -e '/IPv4addr/s@[^=]*$@'"$IPtest"'@' example.conf
问题集(Raspberry Pi OS):
我有一个文件 example.conf
,其中包含一行 IPv4addr=XXXXX
。我正在尝试将其更改为在命令
ipTest=$(ip --brief a show | grep eth0 | awk '{ print }')
我想在脚本 install.sh
期间自动更改此文件,我尝试的行是:
IPtest=$(ip --brief a show | grep eth0 | awk '{ print }')
sudo sed -e "/IPv4addr/s/[^=]*$/$IPtest/" example.conf
Returns 错误:
sed: -e expression #1, char 32: unknown option to `s'
该代码中的一个简单行有效,例如 SimpleTest='Works'
有什么想法吗?我也对其他解决方案持开放态度,但我不是经验丰富的 linux 用户,所以我使用我知道的工具来处理其他问题集。
您可以缩短变量并允许 awk
同时完成 grep
的工作
IPtest=$(ip --brief a s | awk '/eth0/{print }')
使用sed
分组和反向引用
sed -i.bak "s|\([^=]*.\).*|$IPtest|" example.conf
$IPtest
包含 /
字符;尝试这样的事情:
IPtest=$(ip --brief a show | grep eth0 | awk '{ print }')
sudo sed -e '/IPv4addr/s@[^=]*$@'"$IPtest"'@' example.conf