[解決済み] なぜテキストファイルは改行で終わらなければならないのですか?
質問内容
すべてのテキストファイルは改行で終わるべきであるという格言は、皆さんよくご存じだと思います。私は何年も前からこのルールを知っていましたが、いつも不思議に思っていました。
どうすれば解決するの?
なぜなら、それは を定義しています。 ライン :
- 3.206 ライン
- 0個以上の非改行文字と終端文字である改行文字の列。
したがって、改行文字で終わらない行は実際の行とはみなされません。そのため、ファイルの最終行が改行で終わっていないと処理に支障をきたすプログラムがあるのです。
ターミナル・エミュレーターで作業する場合、このガイドラインには少なくとも1つの明確な利点があります。Unix のツールはすべてこの規約を予期しており、それに従って動作します。例えば、ファイルを結合するときに
cat
改行で終わるファイルとそうでないファイルでは、効果が異なります。
$ more a.txt
foo
$ more b.txt
bar$ more c.txt
baz
$ cat {a,b,c}.txt
foo
barbaz
また、前の例でも示したように、コマンドラインでファイルを表示する場合(たとえば
more
) 改行で終端しているファイルは正しく表示されます。不適切に終了したファイルは、文字化けする可能性があります(2行目)。
一貫性を保つために、このルールに従うことは非常に有用です。そうしないと、デフォルトのUnixツールを扱うときに余分な作業が発生します。
逆に考えるんだ。もし、行が改行で終了していなければ
cat
のようなファイルを連結するコマンドはどうすればいいのでしょうか?
- 各ファイルの先頭を改行するのは、95%の場合において望ましいことです。
-
の間の例のように、2 つのファイルの最終行と先頭行をマージすることができます。
b.txt
とc.txt
?
もちろん、これは
ソルバブル
を使用する必要があります。
cat
をより複雑にする (位置指定コマンドライン引数を追加する、例.
cat a.txt --no-newline b.txt c.txt
を含む)、そして今度は
コマンド
は、個々のファイルではなく、他のファイルとの貼り合わせを制御します。これは、ほぼ間違いなく不便です。
... あるいは、終了ではなく継続させるべき行をマークするために、特別なセンチネル文字を導入する必要があります。この場合、POSIXと同じ状況に陥りますが、逆になっています(行終端文字ではなく行継続文字)。
<サブ では、オン POSIX非対応 ファイルは一般に改行で終わらないし、行の(非公式な)定義は、例えば「次のようなテキスト」かもしれません。 分離 改行で」(強調に注意)。これは全く妥当なことです。しかし、構造化されたデータ(プログラミング コードなど)については、解析が最小限に複雑になります。一般的には、パーサーを書き直さなければならないことを意味します。パーサーがもともとPOSIXの定義を念頭に置いて書かれている場合は、パーサーではなくトークンストリームを変更する方が簡単かもしれません。つまり、入力の最後に「人工改行」トークンを追加するのです。
関連
-
[解決済み] System.ComponentModel.Win32Exception (0x80004005): ixwebhosting [closed]でアクセスが拒否されました。
-
[解決済み] wget & curl output "No such file or directory".
-
[解決済み] grep --exclude/--include構文を使って特定のファイルをgrepしないようにする
-
[解決済み] 大きなテキストファイルを、同じ行数の小さなファイルに分割するにはどうすればよいですか?
-
[解決済み] cURL を使ってファイル付き POST データをアップロードする
-
[解決済み] ファイルからの読み取りとファイルへの書き込みを最も簡単に行う方法
-
[解決済み】Vimで改行を削除する。
-
[解決済み】VIMがファイル末尾に改行を追加するのを止めるには?
-
[解決済み] ファイルフルパスからファイル名を検索する
-
[解決済み] すべてのサブディレクトリから特定の拡張子を持つすべてのファイルをコピーする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonでリストをファイルに書き込む
-
[解決済み] No newline at end of file "のログはどういう意味ですか?
-
[解決済み】ドキュメントの行数を数えるには?[クローズド]。
-
[解決済み】ファイルを一行ずつ読み込んで変数に値を代入する【重複あり
-
[解決済み】VIMがファイル末尾に改行を追加するのを止めるには?
-
[解決済み】なぜソースファイルの最後に空行を入れることが推奨されるのですか?
-
[解決済み】Javaでファイル内の行数について
-
[解決済み] 「ファイル末尾に改行がない」コンパイラの警告
-
[解決済み] Ant タスクで、ファイルが存在する場合のみ Ant ターゲットを実行する?
-
[解決済み] コマンドの標準入力に変数の値を渡すには?