A diferença entre o comando sed sob mac e linux


Prefácio
Há uma certa diferença entre o uso do comando sed no Mac e Linux. O principal motivo é que o formato de backup deve ser especificado no mac e é necessária a inserção de nova linha para inserir no mac.

Formato de backup não ignorável

# linux下success
sed -i 's/hello/world/g' hello.text

A linha de código acima pode ser executada no Linux, a função é substituir o hello encontrado no arquivo hello.text por world e salvar diretamente o conteúdo modificado no arquivo.
Se você executar o comando acima em um Mac, verá que esta linha de código relatará um erro. O motivo é que, no Mac, quando o comando sed manipula diretamente o arquivo, você deve especificar o formato do backup, mas no Linux, esse requisito não existe.

# mac下success
sed -i '' 's/hello/world/g' hello.php

Como mostrado no código acima, adicione um par de aspas após -i para especificar o formato do backup.Se o backup não for necessário, o conteúdo das aspas poderá estar vazio.

Inserir texto precisa de nova linha

sed -i '' '1i\ hello ' hello.txt

A função da linha de código acima é inserir um olá no arquivo, que pode ser executado normalmente no Linux, mas ainda assim reportará um erro no Mac.
O motivo é que, quando você usa o comando sed para inserir texto no arquivo, deve inserir uma quebra de linha após 1i. O código correto é o seguinte.
Por exemplo, se você deseja usar este comando no terminal, o código correto é o seguinte, após 1i, pressione enter e continue com os seguintes comandos.

sed -i '' '1i\
hello' hello.php

Como eu uso ruby ​​para chamar o shell script, escreverei o comando na string e o código para inserir o texto usando sed no ruby ​​é o seguinte.

system "sed -i '' '1i\\'$'\n''hello' hello.php"

Acho que você gosta

Origin www.cnblogs.com/xuange306/p/12702313.html
Recomendado
Clasificación