Risposte:
Sì, prova a fare questo e scegli il tuo metodo preferito =):
Con grep :
echo "ixi" | grep -oP "^.\K."
Con taglio :
echo "ixi" | cut -c2
Con espansione dei parametri bash :
x='ixi'; echo ${x:1:1}
Con sed :
echo "ixi" | sed 's/.\(.\)./\1/'
o
echo "ixi" | sed 's/\(^.\|.$\)//g'
Con perl :
echo "ixi" | perl -lne 'print $& if /^.\K./'
Con rubino :
echo "ixi" | ruby -ne 'print $_.split(//)[1]'
Con awk :
echo 'ixi' | awk '{split($0, a, ""); print a[2]}'
Con Python :
echo "ixi" | python -c 'print list("'$(cat)'")[1]'
o
python -c 'import sys; print list(sys.argv[1])[1]' ixi
\K
riavvia la partita a zero (vedi pcre
doc)$(cat)
in Python è un hack shell da ottenere STDIN
cut
Puoi anche usare sed
invece di grep
:
sed 's/.\(.\)./\1/'
Questo dice:
s/
... abbina l'espressione al /
personaggio successivo ..
... abbina il primo carattere (qualsiasi).\(.\)
... abbina il personaggio successivo e ricordalo..
... corrisponde al terzo carattere (qualsiasi)./
... indica la fine dell'espressione.\1
... sostituisci l'intera stringa corrispondente al carattere che è stato ricordato./
... fine del testo sostitutivo.Così:
$ echo "abc" | sed 's/.\(.\)./\1/'
Stampa:
b
grep
.