回答:
sedの挿入(i)オプションを使用して、前の行にテキストを挿入します。
sed '1 i\
質問作者の更新:
GNUを使用してファイルを所定の場所で編集sedするには、-iオプションを追加する必要があり
ました。
sed -i '1 i\anything' file
構文も
sed -i '1i text' filename
非GNU sedの場合
バックスラッシュの1i\後と直後にリターンキーを押す必要がありますfirst_line_text:
sed -i '1i\
first_line_text
'
また、一部の非GNU sed実装(たとえば、macOS上の実装)では、フラグの引数が必要です-i(-i ''GNUと同じ効果を得るために使用しますsed)。
-iオプションなしでは機能しません。回答する前に回答を更新します。
sed (GNU sed) 4.2.2単に sed '1 i text to insert' -i file魅力のように働きました。ありがとう
awk以下の私の悪いランクの回答を参照してください。これは動作するはずです。
エコーは、テキストを取得するために使用されます。Catファイル名-コンソールにファイルを印刷し、それを使用して別のファイルfilename1に送信し、filename1をfilenameに移動して、目的のファイルの最初の行にテキストを挿入します。
(echo "some text" && cat filename) > filename1 && mv filename1 filename
sed -i '1i new_text' file_name
この-iオプションを指定しない場合、エラーは表示されず、標準の端末に出力が表示されますが、ファイルにテキストは挿入されません。
-iスイッチに関するものではありません。
gnu sedgnu sedi
0aあなたが試みたコマンドがないで動作しex、前任者にはvi:
printf '%s\n' 0a 'Anything you want to add' . x | ex file.txt
printfそれ自体でコマンドが出力されます。
0a
Anything you want to add
.
x
0a手段は、0行目の後に(つまり、最初の行の前に)追加します。
次の行または複数行は、追加するリテラルテキストです。
.それ自体で上の行は、「追加」コマンドを終了します。
これxにより、Exはファイルへの変更を保存して終了します。
この古い質問では、誰もが最も一般的な(この場合は非常に単純な)sedコマンドを示していないことに驚いています。
$ sed -i '1s/^/new_text\
/' file_name
これはほとんどのシェルで動作し、いくつかのsedバージョンに移植可能です。
GNU sedが利用可能な場合、これを使用できます。
$ sed -i '1s/^/new_text\n' file_name
違いは、GNU sed \nでは改行にa を使用できることと、バックスラッシュが先行するリテラル改行が必要なことです(GNU sedでも動作します)。
$'…'構文を受け入れるシェルが使用されている場合は、改行を直接挿入できます。そのため、sedは、改行がすでに存在することを確認します。
$ sed -i $'1s/^/new_text\\\n/' file_name
これは、より多くのsedバージョンで機能します。
残念ながら、上記のすべての回答(ほとんどがsed)は、最初の行をすべて置き換えたため、うまくいきませんでした。私はUbuntu 16.04 LTSマシンに乗っています。ここに私の回避策がありGNU Awk 4.0.2ます:
awk '{if(NR==1){$0="NEW_FIRST_LINE"$0; print $0} ;if(NR!=1){print $0}}' file_name
sed置換を使用する答えは1つだけですが、既存の行を置換しません。
ファイルの先頭/末尾にテキストを挿入/追加する方法を検索した人は、おそらく他の方法も知っている必要があると思います。
cal | \
gsed -E \
-e '1i\{' \
-e '1i\ "lines": [' \
-e 's/(.*)/ "\1",/' \
-e '$s/,$//' \
-e '$a\ ]' \
-e '$a\}'
これは、cal出力がgnu-するパイプsed(と呼ばれるgsed介してインストールMacOSでbrew.sh拡張正規表現(と)-E)及び6「スクリプト」適用(-e)でエスケープ改行\読みやすくするため。スクリプト1と2は1i\、「1行目で挿入」に使用します。スクリプト5および6は$a\、「行<last>で追加」するために使用します。テキスト出力を垂直方向に揃えて、結果に期待されるものをコードに表示させました。スクリプト3および4は置換を行います(後者は「行<最後>」にのみ適用されます)。その結果、コマンド出力が有効なJSONに変換されます。
{
"lines": [
" October 2019 ",
"Su Mo Tu We Th Fr Sa ",
" 1 2 3 4 5 ",
" 6 7 8 9 10 11 12 ",
"13 14 15 16 17 18 19 ",
"20 21 22 23 24 25 26 ",
"27 28 29 30 31 ",
" "
]
}
1i、最初の行の前にテキストを挿入する4つの回答が既にあります。この質問を持つ人は、彼らの問題を解決するためにあなたの答えから必要な部分を抽出する必要があります。質問は無料ですので、具体的な答えを提供するために、あなた自身の質問をしてください。