ファイルの最後の文字を見つけて、その後に文字列を追加しますか? [コピー]

ファイルの最後の文字を見つけて、その後に文字列を追加しますか? [コピー]

を使用できるので、追加の行を追加するのは簡単ですecho "line" >> file。しかし、新しい行を開始せずにファイルの最後の文字の後に文字列を追加するにはどうすればよいですか?これを行う良い方法は何ですか?

答え1

正しい形式のUnixテキストファイル〜しなければならないファイルの末尾には末尾の改行文字があります。必要なものを取得するには、文字列を配置する必要があります。今後それ既存の末尾の改行文字。

次のテストファイルを検討してください。

$ cat File
1
2
3

それでは、最後の行に単語を追加してみましょう。今後最後の改行文字:

$ sed '$s/$/new words/' File
1
2
3new words

または、ファイルをその場で編集するには、次の-iオプションを使用します。

sed -i.bak '$s/$/new words/' File

仕組み:

  • $

    最初は、$sedにファイルの最後の行以降にのみコマンドを実行するように指示します。

  • s/$/new words/

    ファイルの最後の行の場合、これは行のnew words最後にありますが、今後最後の改行文字です。

    代替コマンドは$行の終わりを示します。

答え2

ファイル全体を書き換えたくない場合は、ファイルの終わりを見つけて文字をバックアップして書き込むことができます。

一般的なUnixシェルツールを使用してこれを行うのは少し不確実です。

しかし、Perlはすべてを行うことができます。 Ruby、Python、または他のすべての機能を備えたスクリプト言語を使用することもできます。

パールの例:

#!/usr/bin/env perl

use strict;
use Fcntl qw(:seek);

open(F, '+<', 'testfile') or die "$!";
seek(F, -1, SEEK_END) or die "$!";
print F "new data\n";
close(F) or die "$!";

関連情報