2011-03-01 174 views
3

我正在檢查文本文件中的字符串。如果string1不存在,則在字符串2之後添加string1。否則,string1不存在。Shell腳本查找文本文件中的文本

這裏是我到目前爲止有:

if [ string1 does not exisit ] //Stuck at this 
then 
sed '/string2/ a\ string1' myfile 
fi 

又怎麼可以加入我的琴絃「/」字符?

回答

4
if grep -qs string1 myfile 
then 
    sed '/string1/ a\ string2' myfile 
fi 

但是,你可以跳過,因爲sedif是字符串的存在反正測試。這樣,你只能讀一次文件而不是兩次。如果您想要對文件進行就地更改,請使用sed -i

+0

對不起,我做了一個錯字,用sed應該檢查字符串2的存在。 – Matt 2011-03-01 17:49:32

0

您可以使用grep,例如像這樣:

$(grep -q "string1" myfile) 
if [ $? -eq 1 ]; then 
    sed '/string1/ a\ string2' myfile 
fi 
+0

括號和命令替換不是必需的。 '-eq 1'不會通過,因爲退出代碼不會被輸出,而是保存在'$?'中。 – 2011-03-01 17:34:40

+0

是的,你說得對,我會修改代碼。關於括號,我喜歡把它們放在一起,即使它們不是必需的,我發現它們的代碼更具可讀性。 – krtek 2011-03-01 17:37:22