我有一個檔案:
dynamicclaspath.cfg
VENDOR_JAR=/clear-as-1-d/apps/sterling/jar/struts/2_5_18/1_0_0/log4j-core-2.10.0.jar
VENDOR_JAR=/clear-as-1-d/apps/sterling/jar/log4j/2_17_1/log4j-core-2.10.0.jar
我想log4j-core*用log4j-core-2.17.1.jar
我試過了,但我知道我缺少一個正則運算式:
sed -i '/^log4j-core/ s/[-]* /log4j-core-2.17.1.jar/'
uj5u.com熱心網友回復:
這取決于輸入檔案中可能的其他內容,搜索模式必須有多具體。
sed 's/log4j-core-.*\.jar/log4j-core-2.17.1.jar/' inputfile
或者
sed 's/log4j-core-[0-9.]*\.jar/log4j-core-2.17.1.jar/' inputfile
或(如果log4j-core*.jar始終是該行的最后一部分)
sed 's/log4j-core.*/log4j-core-2.17.1.jar/' inputfile
uj5u.com熱心網友回復:
使用您顯示的示例,請嘗試以下sed程式。使用-E選項 withsed來啟用 ERE(擴展正則運算式)。在主程式中使用替換選項執行替換。使用sed's 的能力來使用正則運算式并將匹配的值存盤到臨時緩沖區(捕獲組)中。匹配直到最后一次出現,/然后匹配 log4j-core 直到 jar 的最后一個值。根據 OP 的要求,將其替換為第一個捕獲組值(直到最后一次出現/),然后是 log4j 的新值。
sed -E 's/(^.*\/)log4j-core-.*\.jar$/\1log4j-core-2.17.1.jar/' Input_file
uj5u.com熱心網友回復:
使用sed
$ sed -E 's/(log4j-core-)[^.]*/\12.17.1/' input_file
VENDOR_JAR=/clear-as-1-d/apps/sterling/jar/struts/2_5_18/1_0_0/log4j-core-2.17.1.10.0.jar
VENDOR_JAR=/clear-as-1-d/apps/sterling/jar/log4j/2_17_1/log4j-core-2.17.1.10.0.jar
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/507784.html
