br comando para substituir a primeira linha de um arquivo se começar com “// ------”

0

A ideia é:

se a primeira linha do arquivo FILE.txt começar com

//-----------

substitua por

//----------- %TAG

Para fazer isso, usei o seguinte comando

sed -i "1s/.\/\/-----------/& %TAG/" FILE.txt

Mas não funcionou.

Alguma sugestão?

    
por Salvatore 01.02.2018 / 18:13

2 respostas

2

você está tão perto: apenas solte o . Você está dizendo que começa com algum caractere, então //…

sed -i "1s/\/\/-----------/& %TAG/" FILE.txt

ou altere o delimitador para reduzir o escape.

sed -i "1s#//-----------#& %TAG#" FILE.txt

    
por 01.02.2018 / 18:25
0

Você está perto. O ponto no início irá corresponder a qualquer caractere, que parece que não é necessário. E para fazer a string corresponder apenas no início da linha, o regex deve começar com ^ :

sed -i "1s#^//-----------#& %TAG#" file.txt

Usar um # como o delimitador de comando s simplifica a retrocução.

    
por 01.02.2018 / 20:18