問題は、私のアプリがの既存のxmlファイルに行を追加しようとすることです/system/csc
。
ファイル内にX行があるかどうかをチェックする関数が必要です。そこにある場合は、行を追加しないでください。また、ファイル内に存在する別の行の前に行を配置する必要があります。
行がすでに存在するかどうかを確認し、存在しない場合はそれを挿入するためにgrep
使用できます。sed
grep -Fxq "foobar line" file || sed -i '/^context line$/i foobar line' file
ファイルにまだ見つからない場合は、行のfoobar line
前に行が挿入されます。context line
foobar line
または、次の方法ですべてを行うこともできますsed
。
sed -i '/^foobar line$/d;/^context line$/i foobar line' file
試す
grep -F "$yourLine" file.xml
awk複数のファイルを合計すると、両方のファイルセットに表示されない行が表示されます このページで私の回答を確認してください(私自身の質問に対する最後の回答)edを使用しており、エントリを追加する必要がある行を見つけた後、使用します行番号の後にエントリを追加する一般的なviコマンド。
そうでない場合は、ファイル内の文字列のgrepを実行した後、同じスクリプトを使用できます。
grep pattern $file > /dev/null
if [ $? = 0 ]; then
echo "found"
else
run_ed_function
fi