sed
ファイルの特定の行にテキストを追加するコマンドを探していました。これにより、行1の後にテキストが追加されます。
sed '1 a\
しかし、私はそれを追加したいです。今後1号線。それは次のとおりです。
sed '0 a\
ただし、次のエラーが発生しますinvalid usage of line address 0
。
どんな提案がありますか?
答え1
sed
insert( ) オプションを使用すると、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
オプションを指定しないと、エラーは表示されず、標準端末に出力が表示されますが、ファイルにテキストは挿入されません。