このsedは "$a\"スクリプトに対して何をしますか?

このsedは

私はこのsedコマンドを見つけましたが、それが何をしているのかわかりません。内部変更ファイルを使用していることがわかります-i。スクリプトを使用しており、-eスクリプトはです$a\。しかし、このスクリプトは何をしていますか?

sed -i -e '$a\' filename

ベストアンサー1

他の人が言ったように、例えば存在するファイルの末尾に改行文字を追加するには?、GNU sed(およびその他の実装)の$a\場合、ファイルの末尾に改行文字がない場合は、ファイルの末尾に改行文字を追加します。

なぜそれが何をしているかは非常に明確ではなく、文書でもこれについて説明しません。しかし、ソースコードを確認してみると...

ドキュメントから始めましょう。$a\はいバリエーションa、特殊事例の活用GNU拡張:

GNU拡張として、a次のコマンドとテキスト-eより簡単なスクリプトのために、2つのパラメータに分割できます。

$ seq 3 | sed -e '2a\' -e hello
1
2
hello
3

$ sed -e '2a\' -e "$VAR"

aこのメソッドはsed追加するテキストキューを使用して実装され、append_queueキューを処理する必要がある場合名前の人dump_append_queue、第一歩は

output_missing_newline (&output_file);

必要に応じて不足している改行を追加します。追加されたテキスト〜する現在の行の終わりではなく、別の行に追加します。次に、キューの内容を追加します。

を使用すると、sed -i '$a\'必要に応じて行方不明の改行が追加され、キューが処理されます。ただし、キューが空であるため、他の変更は適用されません。

おすすめ記事