O problema são as aspas simples. O shell interpreta aspas simples como "passe isso em textualmente, sem interpretar nenhum caractere especial". Você precisa substituí-los por aspas duplas e sair das aspas duplas dentro do parâmetro. Algo parecido com isto:
sed -i "2i\
\"1.0.1\": \"1.0.1.zip\",
" file.json
Para sua pergunta original, inserir uma guia com sed
, isso funciona ( 2i
será inserido na linha 2, onde a primeira linha do arquivo é 1). Se você quiser adicionar um caractere de tabulação na linha de comando (ou no vim), pressione Ctrl+Q-<Tab>
para informar que o caractere de tabulação é literal e não deve ser interpretado pelo editor / shell. No caso de outros editores, procure na documentação do editor para ver como inserir uma guia literal.
O exemplo seria:
sed -i.json "2i\
\"1.0.1\": \"1.0.1.zip\",
<Ctrl-Q><Tab>" file.json
em que a sequência <Ctrl-Q><Tab>
significa pressionar essas teclas específicas. Isso dependerá do editor que você está usando. Nos comentários, você menciona que está usando o Código VS, portanto, em vez do truque <Ctrl+Q><Tab>
, convém usar uma das opções dadas nas respostas a essa pergunta: link
Note também que não há espaço entre -i
e .json
.