SED:最後の行の後にテキストを挿入しますか?


77

このコマンドは、ファイルの先頭にタグを挿入します。

sed -i "1s/^/<?php /" file

SEDで各ファイルの末尾に何かを挿入するにはどうすればよいですか?


3
{ cat file; echo 'END OF FILE'; } > newFile 、これはsh。*のおかげでも機能します。(sedのではないが、作品やシンプル)

4
シンプルecho "Cool Text" >> fileでもトリックを行う必要があります。
ダンペ

回答:


95

sed -e "\$aTEXTTOEND" 最も簡単な方法です。

使い方

$最後の行に一致し(通常のsedアドレスです。4 4aTEXTTOEND行目の後に挿入aします)、appendコマンドであり、追加するTEXTTOENDものです。


Makefileで$を$$としてエスケープします。
stevesliva

OS Xの場合 sed -e '$a\NEWLINE\\'。NEWLINEを実際の新しい行に置き換えます。
ホルヘブカラ

15
sed -i -e "\ $ aTEXTTOEND" <filename>は完全なコマンドです。
ラッセマイヤー

2
macosでは動作しません。ホルヘ・ブカラでもないコメント:sed:1: "$ a \ NEWLINE \\":コマンドの最後にある\の後の余分な文字
エマヌエーレパオリーニ

1
debian 9では、最後の行の最後に追加する代わりに新しい行を追加します。
ルチアーノアンドレスマティーニ

31

sedその場合は使用する必要はありません。どう?

echo "<?php" >> file

2
確かに、OPのユースケースでは、ファイルを「<php 」と「>」で囲み、選択したコンテンツを一度に引用するので、おそらく本当にsedフラグメントが必要なのでしょう。
dmckee

2
また、あなたがこれをやると改行をしたくない、エコー-nを使用している場合
Vinko Vrsalovic

2
推測するのは好きではありません。私が試みるたびに、私は間違っています。

4
受け入れ答えがより有用であるもう一つの理由でこれを付加した場合にはあるsudoので、この変動が失敗し、echoシェルコマンドを内蔵ではなく、中に見つかった実行可能ファイルです$PATH
トニーCesaro

@TonyCesaro:echoはビルトインですが、次の場所にある実行可能ファイルであります$PATH
Zan Lynx

24

ファイルに終了phpタグを配置すると仮定すると、

sed -i '$s/$/\n?>/' file

トリックを行う必要があります


1
これは、入力の最終行の任意の操作が必要な場合にうまく機能します。ありがとう!
ジェイテイラー

コマンドの分解説明をいただければ幸いです
GGhe


3

sed 'append(a)'コマンドを使用します。たとえば、ファイルの最後に2行を追加するには:

sed -i -e '$a\
foo1 bar1\
foo2 bar2' file

2

ファイルの特定の行で内容を変更して変更する簡単な方法。特定の行番号に何かを挿入する場合は、以下のコマンドを使用できます。

sed -i '2i i have started' sheikh.log

2i-行番号2と私は挿入するための略です。最後の行に挿入する必要がある場合$は、2の代わりに使用します。挿入するテキストを開始しましたsheikh.log。これはファイル名です。

以下のコマンドを使用して、行に変更を加えることもできます

sed -i '2c we have started' sheikh.log

iに変更されweます。


-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        ",
    "                      "
  ]
}

私はあなたの質問に投票していませんが、受け入れられたものを含め、望ましい結果を示すいくつかの答えがすでにあることに注意してください。
ジェフシャラー

@JeffSchaller Stack Exchangeコミュニティはフォーラムではありません。その目的は、OPのブロック解除を支援することを超えています。目標は、回答を検索するときに求職者が偶然見つけることができる多くのオプションをグローバル知識ベースにシードすることです。私が回答にタイトルを付けた理由は、ユーザーがGoogleの結果をクリックする前に、この回答の有用性をユーザーが認識できるようにするためです。
ブルーノブロノスキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.