AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 510888
Accepted
SebMa
SebMa
Asked: 2019-04-06 16:26:25 +0800 CST2019-04-06 16:26:25 +0800 CST 2019-04-06 16:26:25 +0800 CST

Como evitar/manter a cauda substituindo \r por \n

  • 772

Quando eu reproduzo um vídeo com mpv no backgroud, recebo isso:

$ tail -f nohup.out 
Playing: https://www.facebook.com/TBN/videos/1580372468665943/
 (+) Video --vid=1 (*) (h264 1266x720 30.000fps)
 (+) Audio --aid=1 (*) 'DASH audio' (aac 1ch 48000Hz) (external)
File tags:
 Artist: TBN
 Date: 20180113
 Title: Joseph Prince joins Matt & Laurie TONIGHT on PRAISE... watch NOW!
AO: [pulse] 48000Hz mono 1ch float
VO: [gpu] 1266x720 yuv420p
AV: 00:00:00 / 00:56:50 (0%) A-V:  0.000
AV: 00:00:00 / 00:56:50 (0%) A-V:  0.000
AV: 00:00:00 / 00:56:50 (0%) A-V:  0.000
... # THERE ARE QUITE A LOT OF LINES
AV: 00:00:03 / 00:56:50 (0%) A-V:  0.000
AV: 00:00:03 / 00:56:50 (0%) A-V:  0.000
Saving state.


Exiting... (Quit)
^C

mas eu adoraria ter essa saída (assim como quando eu reproduzo o arquivo sem o nohup):

$ mpv --no-resume-playback https://www.facebook.com/TBN/videos/1580372468665943/
Playing: https://www.facebook.com/TBN/videos/1580372468665943/
 (+) Video --vid=1 (*) (h264 1266x720 30.000fps)
 (+) Audio --aid=1 (*) 'DASH audio' (aac 1ch 48000Hz) (external)
File tags:
 Artist: TBN
 Date: 20180113
 Title: Joseph Prince joins Matt & Laurie TONIGHT on PRAISE... watch NOW!
AO: [pulse] 48000Hz mono 1ch float
VO: [gpu] 1266x720 yuv420p
AV: 00:00:03 / 00:56:50 (0%) A-V:  0.000
Saving state.


Exiting... (Quit)

EDIT1: Eu uso um tty like /dev/pts/2, portanto, se eu digitar stty inlcr, ele deve afetar o tty atual.

Eu ainda recebo a mesma saída confusa emtail -f nohup.out

EDIT2: De acordo com @mosvy tailnão é o culpado, mas mpvé.

Eu descobri uma maneira de fazer um S&R mpvem stderr:

$ mpv --no-resume-playback https://www.facebook.com/TBN/videos/1580372468665943/ 2>&1 | perl -p -e '$| = 1;s/\n/\r/g if $_ =~ /^AV:/;s/Saving state/\nSaving state/' | tee mpv_all.log
Playing: https://www.facebook.com/TBN/videos/1580372468665943/
 (+) Video --vid=1 (*) (h264 634x360 30.000fps)
 (+) Audio --aid=1 (*) (aac 1ch 48000Hz)
AO: [pulse] 48000Hz mono 1ch float
VO: [gpu] 634x360 yuv420p
AV: 00:00:08 / 00:56:50 (0%) A-V:  0.000 Cache: 1024s+86MB
Saving state.
[ffmpeg] https: Will reconnect at 63421312 in 0 second(s), error=End of file.


Exiting... (Quit)

EDIT 3: @mosvy Obrigado, agora funciona:

$ nohup sh -c ' mpv --no-resume-playback https://www.facebook.com/TBN/videos/1580372468665943/ 2>&1 | perl -p -e '\''$| = 1;s/\n/\r/g if $_ =~ /^AV:/;s/Saving state/\nSaving state/'\'' ' &
$ tail -f nohup.out
Playing: https://www.facebook.com/TBN/videos/1580372468665943/
 (+) Video --vid=1 (*) (h264 634x360 30.000fps)
 (+) Audio --aid=1 (*) (aac 1ch 48000Hz)
AO: [pulse] 48000Hz mono 1ch float
VO: [gpu] 634x360 yuv420p
AV: 00:00:08 / 00:56:50 (0%) A-V:  0.000 Cache: 1767s+147MB
Saving state.
[ffmpeg] https: Will reconnect at 103693952 in 0 second(s), error=End of file.


Exiting... (Quit)
^C

EDIT 4: Outra solução graças a @jw013:

export perl_script='$| = 1;s/\n/\r/g if $_ =~ /^AV:/;s/Saving state/\nSaving state/'
mpv="command mpv"
args=("$@")
nohup sh -c "$mpv ${args[*]} 2>&1 | perl -p -e '$perl_script' | tee ~/mpv_all.log" &

Como posso fazer isso ? RESOLVIDO!

linux tail
  • 1 1 respostas
  • 331 Views

1 respostas

  • Voted
  1. Best Answer
    mosvy
    2019-04-07T08:15:38+08:002019-04-07T08:15:38+08:00

    tailnão está substituindo \rpor \n.

    É o seu mpvprograma que está ajustando sua saída de status dependendo se seu stderr é um terminal.

    Teste trivial sobre tailnão substituir o \rpor \n:

    $ nohup sh -c 'while printf "s=$((s=s+1))\r"; do sleep 1; done' &
    [1] 3897
    $ nohup: ignoring input and appending output to 'nohup.out'
    
    $ tail -f nohup.out
    s=8  # s=9, s=10 ... on the same line
    

    Assim como seu pai mplayer, mpvé bastante mal-humorado quando alguém tenta executá-lo de uma forma diferente de como seus autores o imaginaram; Não consegui encontrar nenhuma opção para imprimir seu status da mesma maneira que em um terminal quando seu stderr é um arquivo ou pipe regular. A coisa mais fácil que você pode fazer é executá-lo em uma janela screen/ separada, em vez de com .tmuxnohup

    • 2

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve