'sed: -e expressão # 1, char 4: comando desconhecido:' mas os finais de linha estão bem

5

Eu quero remover a linha que contém set -x no arquivo '"$ (que tsc)", mas recebo um erro:

$ sed -i ".bak" 'set -x' "$(which tsc)"
sed: -e expression #1, char 1: unknown command: '.'

Eu verifiquei a solução aqui , mas meus terminadores de linha são LF .

    
por Max Koretskyi aka Wizard 27.01.2017 / 08:59

2 respostas

5

Você tem erro sintático. Não pode haver espaço após -i , apenas a extensão; esta é a fonte da mensagem de erro (inicial).

Além disso, para remover uma linha baseada em um padrão, você precisa de /<pattern>/ d com sed (existem outras abordagens, mas esta é a mais limpa). Então faça:

sed -i".bak" '/set -x/ d' "$(which tsc)"

Opcionalmente, como a extensão de backup não contém nenhum espaço em branco ou caracteres de controle, você pode sair sem aspas neste caso:

sed -i.bak '/set -x/ d' "$(which tsc)"
    
por 27.01.2017 / 09:05
1

Experimente este comando:

sed -i.bak '/pattern to match/d' ./infile

Você também pode consultar Delete lines em um arquivo de texto que contém uma string específica (no Stack Overflow) para mais métodos para excluir linhas que contenham set -x .

    
por 27.01.2017 / 09:13

Tags