ファイルの先頭にこれを追加できます。
sed -i '1s/^/word\n/' file
はい読む二重引用符を使用すると変数を拡張できるため、次のことを試してください。
sed -i "1s/^/$(printenv)\n/" file
私は最終的に戻った:
sed: -e expression #1, char 15: unterminated `s' command
どうしたの?変数の内容やその他に関連していますか?
答え1
私は次のことがうまくいくと思います。
sed -i '1 e printenv' file
GNU sedマニュアルから:
'e COMMAND'
Executes COMMAND and sends its output to the output stream. The
command can run across multiple lines, all but the last ending with
a back-slash.
または を使用できますが、cat
これを行うには一時ファイルを作成する必要があります。
cat <(printenv) file > temporary_file; mv temporary_file file
パッケージがコンピュータにインストールされている場合は、moreutils
次のコマンドを使用して一時ファイルを手動で作成するのを防ぎますsponge
。
cat <(printenv) file | sponge file
答え2
コンテンツの挿入今後ライン1:
ed -s file <<< $'0r !printenv\nwq'
コンテンツの挿入後ろにライン1:
ed -s file <<< $'1r !printenv\nwq'
答え3
OPの質問に直接答えるには、はい、サブシェルが出力することに関連しています。 Bashが認識し、二重引用符内に意味を維持する特殊文字は、シェルで誤って解釈され、printenv
多くの問題を引き起こす可能性があります。このエラーの最も可能性の高い原因unterminated 's'
は、値がprintenv
複数行の長さであり、sed
sコマンドがその行の終わりに完了すると予想されるためです。このコマンドで置き換えるには、特殊文字を削除したり、エスケープしてリテラルを置き換えるなどのsed
操作を前処理する必要があります。newlines
\n