他のファイルの前にテキストファイル出力を追加する

他のファイルの前にテキストファイル出力を追加する

random.txtあるファイル()のデータをフォルダ内の他のファイルセット()に追加したいと思います。real.txt

たとえば、

$ cat random
some text

$ cat real.txt
sample text

次のコマンドを実行すると:

$ sed i.old '1s;^;some text\n;' real.txt

$ cat real.txt
some text

sample text

このコマンドはファイルのテキストをrandomファイルに追加しreal.txtますが、内容はrandom固定されません。randomコンテンツをにリダイレクトできますかreal.txt

次のコマンドを試しました。

$ sed -i.old "1s;^;$(cat random)\n;" real.txt

$ cat real.txt

出力は次のとおりです。

some text
sample text

問題は、ランダムファイルが "/ *"で始まるtxtを受信したときに発生します。次のエラーが表示されます。

$ cat real.txt
/*new text
 new line*/
$sed -i.old "1s;^;$(cat random)\n;" real.txt
 sed: -e expression #1, char 16: unterminated `s' command

答え1

sed構文が機能しない理由に関する質問を具体的に解決するために、単一引用符内でプロセス置換は発生しません。

この構文は私にとって効果的です。

sed -i.old "1s;^;$(cat random)\\
;" filename

GNUを使用すると、sed次のように動作します。

sed -i.old "1s;^;$(cat random)\n;" filename

GNUを編集して集中して、sed私は2つの解決策を思いつきました。

1)内部のrandom面倒な構文を避けてくださいsed。場合によっては、ファイル内でリテラル改行を使用します。

変える:

/* line1 
   line2 */

改行文字(行1の終わり)を次のようにエンコードします\n

/* line1\n   line2 */

random(行 2 の終わり) 最後の改行文字は次のとおりです。すでに\nコマンドラインと同様にコーディングしますsed

2) 内部編集をあきらめ、sed「 - catand- mv」方法を使用して下さい:

for f in filename; do
    mv $f $f.old
    cat random $f.old > $f
done

関連情報