この問題そしてこの問題一般的な標準は、GNU ツールやその他の POSIX 準拠ツールが期待する POSIX 標準を満たすために改行でテキストファイルを終了することです。
しかし、C#開発者として、私はcsproj
ファイルを処理するツールに改行終了が含まれないことが多いことを知っています。また、json
ファイルから終了xml
改行を削除するためのツールも見ました。これらのファイルを処理する一般的なツールが最終的にそのファイルを再度削除する場合は、テキストファイルの末尾に改行を含めないことが合理的だと思います。
それでは、ツールのために改行文字で終わってはならないテキストファイルの種類は何ですか?
答え1
正確にはテキストファイルではありませんが、シンボリックリンクは実際にはテキストフラグメントを含む小さなファイルです(通常はinode自体に合うので、ファイルにデータブロックを割り当てる必要はありません)。
シンボリックリンクは改行文字で終わることができますが、最も一般的な場合はそうではありません。
改行文字で終わってはならない(確かにそうではない)別の種類のファイルは空のファイルです。
UNIXでは、テキストファイルには空または空の1行以上が含まれ、各行は改行文字で終わります。最後の行が改行文字で終わらない場合、そのファイルは正しいテキストファイルではありません。
空のファイルにはバイトがまったく含まれていません。改行を追加した瞬間、「タイプ」が空白から空白に変わります。
答え2
で処理される検索語の入力として使用されるテキストファイルは、grep -f
改行文字で終わらないでください。(**テキストエディタから)それ以外の場合はすべてと一致します
この例を自分で試してみてください。
grepは遺伝子のすべてのインスタンスを見つけることができませんでした。
編集する:例収集に関する質問ですので参考にしてください。「ツールのため、テキストファイルは改行文字で終わらないでください。」私の最初の声明は一般的なケースには適用されませんが、完璧な例です。「テキストファイル形式」(テキストエディタで生成されたファイル)は質問の文脈で有効です。これは、テキストエディタを使用するときに誰もが経験するものだからです。
これは、\n
ファイルシステムレベルの改行の広範な説明ではなく、極端なケースの例です。一般ユーザーの場合より
@Kusalananda @ilkkachuに、これが2つの改行であることを\n\n
明確にしていただきありがとうございます(その1つはテキストエディタによって自動的に追加され、表示されませんが)。