trocar linhas [RESOLVIDO]

1. trocar linhas [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 12/06/2025 - 13:46h

estou tentando trocar duas linhas de lugar nos meus arquivos .desktop usando awk no arquivo

[Desktop Entry]
Name=Alarm Clock
Icon=alarm-clock
Exec=alarm-clock-applet
Terminal=false
Type=Application
Categories=GNOME;GTK;Utility;
X-Ubuntu-Gettext-Domain=alarm-clock



no caso eu quero recortar a Linha q começa com Exec= e colar no lugar da segunda linha e duplicar a linha que começa com Name=... tentei de várias formas, mas parece q é mais difícil do q parece... desde já agradeço as opiniões
tem como fazer isso usando apenas builtin ?


  


2. MELHOR RESPOSTA

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 13/06/2025 - 17:51h

v aí se ajuda
#!/bin/bash
arquivo="path/do/arquivo"
linha_exec=$(grep "^Exec=" "$arquivo")
sed -i "/^Name=/a \\$(grep "^Name=" "$arquivo")" "$arquivo"
sed -i "/^Exec=/d" "$arquivo"
sed -i "2i \\$linha_exec" "$arquivo"


------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------



3. Re: trocar linhas [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 12/06/2025 - 13:46h

Para trocar as linhas que você mencionou usando awk, você pode utilizar o seguinte comando:

```bash
awk 'NR==2 {print; print; next} NR==3 {print "Exec=alarm-clock-applet"; next} 1' arquivo.desktop > novo_arquivo.desktop
```

Nesse comando, estamos fazendo o seguinte:

- `NR==2`: Altera a linha que começa com `Name=` para que ela seja impressa duas vezes.
- `NR==3`: Substitui a linha que começa com `Exec=`.
- `1`: Imprime todas as outras linhas normalmente.

Não se esqueça de substituir `arquivo.desktop` pelo nome do seu arquivo real. O resultado será redirecionado para `novo_arquivo.desktop`.

Caso queira modificar o mesmo arquivo, você pode utilizar o comando mv para substituir o arquivo original após verificar se o novo está correto:

```bash
mv novo_arquivo.desktop arquivo.desktop
```

Isso deve atender ao que você precisa. Se houver mais alguma dúvida, é só avisar!


4. Re: trocar linhas [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 12/06/2025 - 13:49h


alexabolada escreveu:

Para trocar as linhas que você mencionou usando awk, você pode utilizar o seguinte comando:

```bash
awk 'NR==2 {print; print; next} NR==3 {print "Exec=alarm-clock-applet"; next} 1' arquivo.desktop > novo_arquivo.desktop
```

Nesse comando, estamos fazendo o seguinte:

- `NR==2`: Altera a linha que começa com `Name=` para que ela seja impressa duas vezes.
- `NR==3`: Substitui a linha que começa com `Exec=`.
- `1`: Imprime todas as outras linhas normalmente.

Não se esqueça de substituir `arquivo.desktop` pelo nome do seu arquivo real. O resultado será redirecionado para `novo_arquivo.desktop`.

Caso queira modificar o mesmo arquivo, você pode utilizar o comando mv para substituir o arquivo original após verificar se o novo está correto:

```bash
mv novo_arquivo.desktop arquivo.desktop
```

Isso deve atender ao que você precisa. Se houver mais alguma dúvida, é só avisar!

quero fazer isso em vários arquivos, e as linhas estão em posições diferentes. Por isso gostaria de capturar as linhas com expressões regualar e tornálas em variávei ára então colar no segundo registro
awk '/^Exec=/; LinhaExec = $0'



5. Re: trocar linhas [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 12/06/2025 - 13:49h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



6. Re: trocar linhas [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 12/06/2025 - 13:50h


leoCCB escreveu:


alexabolada escreveu:

Para trocar as linhas que você mencionou usando awk, você pode utilizar o seguinte comando:

```bash
awk 'NR==2 {print; print; next} NR==3 {print "Exec=alarm-clock-applet"; next} 1' arquivo.desktop > novo_arquivo.desktop
```

Nesse comando, estamos fazendo o seguinte:

- `NR==2`: Altera a linha que começa com `Name=` para que ela seja impressa duas vezes.
- `NR==3`: Substitui a linha que começa com `Exec=`.
- `1`: Imprime todas as outras linhas normalmente.

Não se esqueça de substituir `arquivo.desktop` pelo nome do seu arquivo real. O resultado será redirecionado para `novo_arquivo.desktop`.

Caso queira modificar o mesmo arquivo, você pode utilizar o comando mv para substituir o arquivo original após verificar se o novo está correto:

```bash
mv novo_arquivo.desktop arquivo.desktop
```

Isso deve atender ao que você precisa. Se houver mais alguma dúvida, é só avisar!

quero fazer isso em vários arquivos, e as linhas estão em posições diferentes. Por isso gostaria de capturar as linhas com expressões regualar e tornálas em variávei ára então colar no segundo registro
awk '/^Exec=/; LinhaExec = $0'

sacanagem... bugou de novo kkkkk



7. Re: trocar linhas [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 12/06/2025 - 13:50h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



8. Re: trocar linhas [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 13/06/2025 - 09:55h


leoCCB escreveu:


alexabolada escreveu:

Para trocar as linhas que você mencionou usando awk, você pode utilizar o seguinte comando:

```bash
awk 'NR==2 {print; print; next} NR==3 {print "Exec=alarm-clock-applet"; next} 1' arquivo.desktop > novo_arquivo.desktop
```

Nesse comando, estamos fazendo o seguinte:

- `NR==2`: Altera a linha que começa com `Name=` para que ela seja impressa duas vezes.
- `NR==3`: Substitui a linha que começa com `Exec=`.
- `1`: Imprime todas as outras linhas normalmente.

Não se esqueça de substituir `arquivo.desktop` pelo nome do seu arquivo real. O resultado será redirecionado para `novo_arquivo.desktop`.

Caso queira modificar o mesmo arquivo, você pode utilizar o comando mv para substituir o arquivo original após verificar se o novo está correto:

```bash
mv novo_arquivo.desktop arquivo.desktop
```

Isso deve atender ao que você precisa. Se houver mais alguma dúvida, é só avisar!

quero fazer isso em vários arquivos, e as linhas estão em posições diferentes. Por isso gostaria de capturar as linhas com expressões regualar e tornálas em variávei ára então colar no segundo registro
awk '/^Exec=/; LinhaExec = $0'


alexabolada


9. Re: trocar linhas [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 13/06/2025 - 09:55h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



10. Re: trocar linhas [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 13/06/2025 - 09:55h


desisto, a alexa não quer nada comigo


11. Re: trocar linhas [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 13/06/2025 - 15:47h

Usa o prompt da Duck.ia e vê se ela te dá uma luz, cara.

https://duckduckgo.com/?t=ffab&q=duck.ia&ia=chat


==============================
echo 1244394795515721490698P | dc


12. Re: trocar linhas [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 14/06/2025 - 10:58h


Mauriciodez escreveu:

v aí se ajuda
#!/bin/bash
arquivo="path/do/arquivo"
linha_exec=$(grep "^Exec=" "$arquivo")
sed -i "/^Name=/a \\$(grep "^Name=" "$arquivo")" "$arquivo"
sed -i "/^Exec=/d" "$arquivo"
sed -i "2i \\$linha_exec" "$arquivo"


------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------


valeu... eu usei o awk e o sed, passando por pipe. Essa jogada de ir salvando o arquivo é uma bela sacada, valeu







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts