ファイルの最初の行の前にテキストを挿入するには?

ファイルの最初の行の前にテキストを挿入するには?

sedファイルの特定の行にテキストを追加するコマンドを探していました。これにより、行1の後にテキストが追加されます。

sed '1 a\

しかし、私はそれを追加したいです。今後1号線。それは次のとおりです。

sed '0 a\

ただし、次のエラーが発生しますinvalid usage of line address 0

どんな提案がありますか?

答え1

sedinsert( ) オプションを使用すると、i前の行にテキストを挿入します。

sed '1 i\

質問作成者の更新:

GNUを使用してファイルを適切に編集するには、次のオプションを追加するsed必要がありました。-i

sed -i '1 i\anything' file

そして文法

sed  -i '1i text' filename

GNU以外のsedの場合

バックスラッシュの直後に1i\Enterキーを押す必要がありますfirst_line_text

sed -i '1i\
first_line_text
'

また、いくつかの非GNUsed実装(macOSの実装など)にも注意してください。必要フラグの引数-i-i ''GNUと同じ効果を得るために使用されますsed)。

sedまったくサポートされていない実装では、-iこのオプションなしで実行されますが、出力を新しいファイルにリダイレクトします。次に、古いファイルを新しく作成されたファイルと置き換えます。

答え2

エコーはテキストを取得するために使用されます。 Cat filename - コンソールからファイルを印刷し、それを使用して別のファイルfilename1に送信し、filename1をfilenameに移動して目的のファイルの最初の行にテキストを挿入します。

  (echo "some text" && cat filename) > filename1 && mv filename1 filename

答え3

POSIXツールを使用できますex

ex a.txt <<eof
1 insert
Sunday
.
xit
eof

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html

答え4

sed  -i '1i new_text' file_name

この-iオプションを指定しないと、エラーは表示されず、標準端末に出力が表示されますが、ファイルにテキストは挿入されません。

関連情報