grep에서 x만큼의 출력을 출력하고 중복을 건너뛰는 방법

grep에서 x만큼의 출력을 출력하고 중복을 건너뛰는 방법

그래서 YouTube 채널 이름을 입력한 다음 5개의 최신 동영상을 찾는 것과 관련된 빠른 쉘 스크립트를 현재 만들고 있는 데 문제가 있습니다.

저는 이 작업을 위해 YouTube 프런트엔드 "vid.puffyan.us"를 사용하고 있습니다.

그럼 5개의 동영상을 greping할 때 사이트 HTML의 방식으로 인해 동일한 동영상 ID가 3번 반복되는데, 이를 건너뛰고 5개의 다른 ID를 출력할 수 있는 방법이 있습니까?

내 현재 코드는 다음과 같습니다

#!/bin/sh

query=$(printf '%s' "$*" | tr ' ' '+')
channel=$(curl -s "https://vid.puffyan.us/search?q=$query" | grep -Eo "channel/.{24}" | head -n 1)

if [ -z "$query" ]
then
    echo "blank input!"
else
    curl -s "https://vid.puffyan.us/$channel" | grep -Eo "watch\?v=.{11}" | head -n 5
fi

답변1

간단한 수정은 다음에서 나옵니다.mdmay74출력을 파이프 uniq하고 전달하기 만 하면 됩니다 head.

예:

curl -s "https://vid.puffyan.us/$channel" | grep -Eo "watch\?v=.{11}" | uniq | head -n 5

관련 정보