簡體   English   中英

在 sed 替換中運行“ip | grep | awk”

[英]Running "ip | grep | awk" within a sed replacement

問題集(Raspberry Pi OS):我有一個文件“ example.conf ”,其中包含一行IPv4addr=XXXXX 我正在嘗試將其更改為 IP 生成的命令ipTest=$(ip --brief a show | grep eth0 | Z5E4C8DFA9E20567E2655E847F681998) { $3

我想在腳本“install.sh”期間自動執行此文件更改,我正在嘗試的行是:

IPtest=$(ip --brief a show | grep eth0 | awk '{ print $3 }')

須藤 sed -e "/IPv4addr/s/[^=]*$/$IPtest/" example.conf

返回錯誤: sed: -e expression #1, char 32: unknown option to `s'

該代碼中的簡單行有效,例如SimpleTest='Works'

有什么想法嗎? 我也對其他解決方案持開放態度,但是我不是經驗豐富的 linux 用戶,所以我使用我知道的工具來處理其他問題集。

您可以縮短變量並允許awk同時完成grep的工作

IPtest=$(ip --brief a s | awk '/eth0/{print $3}')

使用sed分組和反向引用

sed -i.bak "s|\([^=]*.\).*|\1$IPtest|" example.conf

$IPtest 包含“/”字符,試試這樣

IPtest=$(ip --brief a show | grep eth0 | awk '{ print $3 }')

sudo sed -e '/IPv4addr/s@[^=]*$@'"$IPtest"'@' example.conf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM