2013-02-26 206 views
0

問題是我的應用程序嘗試向/system/csc中的現有xml文件添加行。檢查文件中是否存在行

我需要一個函數來檢查文件內部是否有X行,如果它在那裏不應該添加行也必須將該行放在文件中存在的另一行之前。

回答

1

您可以檢查該行是否已經與grep存在和使用sed插入它如果不是:

grep -Fxq "foobar line" file || sed -i '/^context line$/i foobar line' file 

這行之前插入線foobar linecontext line如果foobar line尚未在文件中找到。

或者你可以用sed做到這一切:

sed -i '/^foobar line$/d;/^context line$/i foobar line' file 
+1

做的字符串的grep在文件中的第二個版本後,使用相同的腳本是一個有點冒險。這將刪除該行的所有事件,並在上下文行之前插入一個新行。儘管用戶期望該行只存在一次,並且已經位於上下文行之前,但該要求並不明確。 – 2013-02-26 15:25:46

+0

@WilliamPursell在這種情況下可能是一個好處,但絕對值得注意。 – 2013-02-26 15:30:45

0

嘗試

grep -F "$yourLine" file.xml