2017-08-28 2 views

Répondre

2

Utilisation possible avec awk - delimiter

echo "abc-def-ghi" | awk -F'-' '{print $2}' 

-F - quel séparateur de champ utiliser.

{print $ 2} - imprimer deuxième position

2

Disons que vous avez:

s="abc-def-ghi" 
ch='-' 

En utilisant BASH read builtin:

IFS="$ch" read -ra arr <<< $s && echo "${arr[1]}" 

Ou, en utilisant BASH regex:

re="$ch([^$ch]*)$ch" 

[[ $s =~ -([^-]*)- ]] && echo "${BASH_REMATCH[1]}" 

Sortie:

def 
1

J'utiliser deux extensions de paramètres.

str="abc-def-ghi" 
tmp=${str#*-} # Remove everything up to and including first - 
result=${tmp%%-*} # Remove the first - and everything following it 
0

Pourquoi ne pas utiliser couper commande comme ceci:

str = "abc-def-ghi"

echo $ str | couper -f 2 -d "-"

, où option -d est un délimiteur et option -f représente le numéro de fragment (le premier numéro de fragment est 1, et non pas 0 comme il est courant pour les tableaux).