ソースファイル:
$cat test.file
aaa
bbb
ccc
2行目に挿入したいのですが、echo test> /var/tmp/file
必要な結果は次のとおりです。
$ cat test.file
aaa
echo test > /var/tmp/file
bbb
ccc
以下を試しましたが失敗しました:(
$ sed -i "2 s/^/echo test > /var/tmp/file\n/" test.file
sed: -e expression #1, char 20: unknown option to `s'
$ sed -i "2 s/^/"echo test > /var/tmp/file"\n/" test.file
-bash: /var/tmp/file\n/: Is a directory
ベストアンサー1
努力する:
sed '2i echo test > /var/tmp/file' infile
2i
2行目にテキストを挿入すると言います。
独自のソリューションも機能するはずですが、テキストに追加/
したいものがあり、それ自体が文字を代替文字として使用するため、互いに競合します。sed
/
この問題を解決する方法は2つあります。
sed
/
代替文字を入力ファイルにない他の文字に変更します。sed '2 s:^:echo test > /var/tmp/file\n:' infile
/
ファイルに追加するテキストのすべての文字をエスケープします。sed '2 s/^/echo test > \/var\/tmp\/file\n/' infile
-i
結果がうまくいったら、内部置換用のスイッチをコマンドに追加します。
sed -i '2 s/^/echo test > \/var\/tmp\/file\n/' infile