sed mac 特定の行にタブとテキストを挿入する

sed mac 特定の行にタブとテキストを挿入する

sedを使用して、Macの2行目にタブ文字と引用符付きの文字列(json)を挿入し、改行文字を挿入しようとしています。これまで私

sed -i '.json' "2i\\
\"$(printf '\t') \"1.0.1\": \"1.0.1.zip\",\\
    " dummy.txt

そして出力

"        "1.0.1": "1.0.1.zip",

それから削除しようとすると\"

sed -i '.json' "2i\\
$(printf '\t') \"1.0.1\": \"1.0.1.zip\",\\
    " dummy.txt

そこにはラベルはありません。タグを取得するにはここに何かがありますか?

編集:私はこれを試しました

バージョン=5.5.1

sed -i '' "2i\\
echo -e [\\t] \"1.0.1\": \"1.0.1.zip\",\\
    " dummy.txt

私のdummy.txtファイルの出力は次のとおりです。

echo -e [t] "1.0.1": "1.0.1.zip",

タブが存在しません。

ベストアンサー1

問題は一重引用符です。シェルは一重引用符を「特殊文字を解釈せずにそのまま渡された」と解釈します。これを二重引用符に置き換えて、パラメータ内の二重引用符をエスケープする必要があります。このような:

sed -i "2i\\
\"1.0.1\": \"1.0.1.zip\",
   " file.json

元の質問では、タブ文字を挿入するとsed機能します(2iファイルの最初の行が1の行2に挿入されます)。コマンドライン(またはvim)にタブ文字を追加するには、Ctrl+Q-<Tab>タブ文字がリテラル文字であり、エディタ/シェルで解釈されないことをクリックします。他のエディタの場合は、エディタのドキュメントを確認してテキストタブを入力する方法を学びます。

例は次のとおりです。

sed -i.json "2i\\
\"1.0.1\": \"1.0.1.zip\",
<Ctrl-Q><Tab>" file.json

ここで<Ctrl-Q><Tab>シーケンスとは、対応する特定のキーを押すことを意味します。これは使用するエディタによって異なります。あなたがVSコードを使用していると述べたコメントでは、トリックの代わりにこの<Ctrl+Q><Tab>質問に対する回答に記載されているオプションの1つを使用できます。https://stackoverflow.com/questions/45566785/vscode-insert-tab-character-manually

-iまた、との間には空白があってはなりません.json

おすすめ記事