一部のコンテンツ(下のコードに表示される最初、2番目、3番目のスペースを含む)を追加したいファイルがあります。
###私はテキストメッセージ1です ###私はテキストメッセージ2です
(私が添付した実際のテキストはこの5行よりはるかに長いです。)
単にファイルにコンテンツを追加するには、次の手順を実行します。
cat <<-"EOF" >> myPath/myFile
content...
EOF
しかし、ファイルにコンテンツがまだ存在しない場合にのみ、ここにドキュメントにコンテンツを追加させるにはどうすればよいですか?それ以外の場合、ジョブは中断されます。
ファイルに部分ブロックの内容しかない場合は、操作全体を中断する必要があります。
ベストアンサー1
文書がない場合にのみここに文書を追加する場合は、次のものを使用できますgrep
。
cat <<-"EOF1" > myPath/myFile.append
content...
EOF1
if ! grep -F -q -f myPath/myFile{.append,}; then
cat myPath/myFile.append >> myPath/myFile
fi
これを理解するには、次の点を考慮してください。
grep -F -q -f myPath/myFile{.append,}
シェルに拡張されましたgrep -F -q -f myPath/myFile.append myPath/myFile
。この
grep
コマンドは、myPath/myFile
(追加するテキストを含むファイル)-F
に含まれる固定文字列()を検索し(必要に応じてmyPath/myFile.append
テキストを追加する必要があるファイル)、-f
1行に1つのパターン()を読み取り、固定文字列を見つけた場合にのみ表示します。します。文字列():そうです。終了コード、出力なし(-q
)。その後、結果は反転され、
!
何も見つからなかった場合にのみブロックの一部が実行されますif
。then
grep