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
\Kriavvia la partita a zero (vedi pcredoc)$(cat) in Python è un hack shell da ottenere STDINcut
Puoi anche usare sedinvece 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.