如果它们是192.168,则替换前两个八位字节

时间:2018-03-19 16:35:09

标签: regex bash unix sed

如果匹配192.168,我需要使用sed将前两个八位字节替换为212.15。

input="192.168.0.1 computer1.desktop"
input2="183.92.0.1 computer1.desktop"
# This should result in 
# result="212.15.0.1 newcomputer1.desktop"
echo $input | sed -e 's/192.168/212.15/g' | sed -e 's/computer1/newcomputer1/g'

这部分工作正常。我的问题是第二个sed应该只在第一个正则表达式匹配前两个八位字节时运行。它们可能都可以组合成一个表达式。 目前,如果我这样做:

echo $input2 | | sed -e 's/192.168/212.15/g' | sed -e 's/computer1/newcomputer1/g'

# Then result wouldn't be accurate
# it would echo   "183.92.0.1 newcomputer1.desktop"

感谢任何建议。

1 个答案:

答案 0 :(得分:3)

以下sed命令应该在匹配target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE src)

的行上进行两次替换
/192.168/

请注意sed -e '/192.168/ { s/192.168/212.15/g; s/computer1/newcomputer1/g; }' 匹配任何字符,并确保.是第一个八位字节192可用于匹配行首。

^