다음 코드가 있습니다.
#! /bin/sh
tail -f /var/log/omxlog | stdbuf -o0 grep player_new | while read i
do
omxd S
done
다음 형식으로 비디오 재생 목록을 실시간으로 출력합니다.
...
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
...
이제 현재 재생 중인 비디오의 이름을 여러 변수에 저장하고 싶습니다. 예를 들면 다음과 같습니다.
x1 = F01_Ship_111.mp4
x2 = F01_Ship_111
x3 = F01
x4 = Ship
x5 = 111
x6 = mp4
그래서 내가 무엇을해야하니!
답변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##*.}
답변2
bash를 태그해주셨으니 잘 활용하겠습니다[[ ... ]]
조건부 구성:
#!/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