Como posso remover o texto na última linha de um arquivo?

3

Estou usando um script de shell Bash para construir um arquivo de texto que contenha um array de Javascript. Tanto quanto eu entendo com JavaScript, o último item em uma matriz não pode ter uma vírgula. Nos meus Javascripts, isso me dá erros.

Eu tenho uma lista de itens que são gerados com outro código, e o resultado é algo como isto:

text0161: "blah",
text0162: "blah blah",
text0163: "blah blah blah",

Eu preciso pegar a última linha, text0163: "blah blah blah", e remover a vírgula final, então ela se torna text0163: "blah blah blah" .

Neste ponto do meu processamento, não há nada após text0163: "blah blah blah" , portanto, posso procurar apenas a última linha do arquivo e remover a vírgula. No entanto, o conteúdo da linha pode mudar, por isso nem sempre será exatamente text0163: "blah blah blah", . Pode se tornar praticamente qualquer outra coisa, como text2020: "doobie doobie doo", .

Eu sei que posso usar sed para excluir a vírgula, assim:

sed -i 's@,@@g' file.txt

Mas eu não sei como apenas fazer isso na última linha.

    
por Questioner 20.02.2013 / 19:10

2 respostas

5

Você pode especificar o endereço do seu comando específico / expressão regular. A última linha é representada por $ , então, no seu caso, seria:

sed -i '$ s/,$//' file.txt

Por favor, note que eu substitui o seu @ por / , já que eles são mais usados em expressões regulares.

Esta expressão regular também remove apenas a vírgula no final da linha, por ex. se houver um espaço após a vírgula ou a vírgula estar no texto citado, ela não será removida.

    
por 20.02.2013 / 19:15
0

No sed, você pode combinar a última linha com $ , e há um comando d que exclui a linha atual:

sed -i '$d' file.txt
    
por 23.12.2014 / 01:31

Tags