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
「 - cat
and- mv
」方法を使用して下さい:
for f in filename; do
mv $f $f.old
cat random $f.old > $f
done