2015-02-24 30 views
0

我碰到在我們的傳統慶典代碼sed命令上的-itmp標誌是做什麼的?

sed -itmp <something> file.txt 

下面就因爲我不明白清楚呢,我試着以下

這裏是file.txt內容運行sed

dummy={my.java.home} 
dummy={my_java_home} 

我現在運行

sed -itmp "s#{my.java.home}#${JAVA_HOME}#g" file.txt 

我跑在此之後,我得到以下

dummy=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home 
dummy=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home 

我可以看到SED內容替換。但我不明白sed在我的原始文件中替換my_java_homemy.java.home,儘管我在上面發出sed命令時要求它只更改my.java.home

感謝

回答

1

因爲圓點您正則表達式不僅任何字符內字面點相匹配。所以我建議你逃避你的正則表達式中的點,以便它只匹配my.java.home字符串。

sed -itmp "s#{my\.java\.home}#${JAVA_HOME}#g" file.txt 

而且您實際上不需要tmp參數。

sed -i "s#{my\.java\.home}#${JAVA_HOME}#g" file.txt 
+0

會介意給出一行'itmp'的標記嗎? – 2015-02-24 01:28:37

+0

@brainstorm t是一個標籤。但我不知道「m」和「p」是什麼。我認爲如果沒有tmp參數,它會很好地工作。 – 2015-02-24 01:32:41

+0

'-i'調用就地編輯,保存對該文件所做的更改。 – 2015-02-24 01:37:01