Como obter as últimas palavras da linha no log?

0

Eu tenho o seguinte código:

#! /bin/sh

tail -f /var/log/omxlog | stdbuf -o0 grep player_new | while read i
do
       omxd S
done

que mostra a lista de reprodução de vídeos no seguinte formato (em tempo real):

...
Playing 33/75 /myfolder/F01_Ship_111.mp4
Playing 0/22 /myfolder/F02_Car_101.mp4
Playing 11/32 /myfolder/F03_Animal_001.mp4
Playing 23/84 /myfolder/F04_Book_000.mp4
...

Agora eu quero salvar o nome do vídeo atual que está sendo reproduzido em diversas variáveis, como:

x1 = F01_Ship_111.mp4
x2 = F01_Ship_111
x3 = F01
x4 = Ship
x5 = 111
x6 = mp4

Então, como posso fazer isso?

    
por Omid1989 16.02.2017 / 07:36

2 respostas

1

Values=$(omxd S | awk -F/ '{print $NF}')
x1="${Values}"
x2="${Values%.*}"
x3="${Values%%.*}"
x4=$(echo ${Values} | cut -d_ -f2)
x5=$(echo ${x2} | cut -d_ -f2)
x6=${Values##*.}
    
por 16.02.2017 / 07:52
1

Como você marcou o bash, usarei seu [[ ... ]] Construção condicional :

#!/bin/bash

tail -f /var/log/omxlog | stdbuf -o0 grep player_new | while read i
do
  [[ $i =~ .*/([^_]+)_([^_]+)_([^.]+).(.+)$ ]] && {
  x1=${BASH_REMATCH[1]}_${BASH_REMATCH[2]}_${BASH_REMATCH[3]}.${BASH_REMATCH[4]}
  x2=${BASH_REMATCH[1]}_${BASH_REMATCH[2]}_${BASH_REMATCH[3]}
  x3=${BASH_REMATCH[1]}
  x4=${BASH_REMATCH[2]}
  x5=${BASH_REMATCH[3]}
  x6=${BASH_REMATCH[4]}
  }
  omxd S
done
    
por 16.02.2017 / 21:19