1.
echo "TEST 12345.123 17.01.2021 More text 12345" | sed 's/^[A-Z]\+ \([0-9]\+\)\..*$/\1/'
A \( \) közti részt a regexp elmenti, \1-ként hivatkozhatsz rá a cserében.
Ha akarod, akkor ketté is szedheted amúgy…
echo "TEST 12345.123 17.01.2021 More text 12345" | sed 's/^[A-Z]\+ //' | sed 's/\..*$//'
2.
A tail -n1 az előző parancs utolsó sorát adja vissza, szerintem arra van szükséged. Ez csak akkor megy, ha egyszer fordul elő, egyébként minden harmadik sorra van szükséged, amihez nekem is kapcsolódik dilemmám: van valami kulturált mód az ennedik sor visszaadására? Eddig egymásba szoktam pipe-olni egy headet meg egy tailt, de ezt korlátozottan kulturált megoldásnak tartom…☺)
Ha több találat van, arra szerintem az awk nyújt megoldást, amihez nem értek. Meg lehet kerülni, de az nagyon csúnya:
t = $(tempfile)
lines = $(wc -l $t)
grep -A 2 pattern file >> $t
for i in `seq 3 4 $lines`; do tail -n $i $t | head -n 1; done
… vagy valami ilyesmi, nem teszteltem, és ha van épkézláb megoldás, inkább használd azt… ☺
int getRandomNumber() { return 4; } // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű. xkcd