J'essaie de compter le nombre de fois qu'une valeur hexadécimale apparaît dans un fichier. La valeur hexadécimale est définie dans une variable.

L'utilisation de la chaîne littérale "x01" renvoie le nombre correct :

grep -o $'\x01' ${fileName} | wc -l

Comment puis-je utiliser une variable à la place de x01 ?

3
Fiddlestiques 3 nov. 2020 à 15:42

1 réponse

Meilleure réponse

Emprunt de Conversion de la chaîne hexadécimale en ascii dans la ligne de commande bash

# single quote character in hex
$ a='\x27'

$ echo "a'b'c" | grep -o $(echo "$a" | xxd -r -p)
'
'

$ echo "a'b'c" | grep -o $(echo "$a" | xxd -r -p) | wc -l
2

# you can also use just the number, \x prefix is optional
$ echo "a'b'c" | grep -o $(echo '27' | xxd -r -p) | wc -l
2

# if PCRE is available
$ echo "a'b'c" | grep -oP "$a" | wc -l
2

# with ripgrep (https://github.com/BurntSushi/ripgrep)
$ echo "a'b'c" | rg -oc "$a"
2
1
Sundeep 3 nov. 2020 à 13:55