sed -i '/first/i This line to be added'
Dans ce cas, comment ignorer la casse en recherchant pattern = first
Vous pouvez utiliser les éléments suivants:
sed 's/[Ff][Ii][Rr][Ss][Tt]/last/g' file
Sinon, vous avez les indicateurs /I
et n /i
:
sed 's/first/last/Ig' file
De man sed :
je
je
Le modificateur I pour la correspondance d’expressions régulières est une extension GNU qui fait que sed match regexp est insensible à la casse.
$ cat file first FiRst FIRST fir3st $ sed 's/[Ff][Ii][Rr][Ss][Tt]/last/g' file last last last fir3st $ sed 's/first/last/Ig' file last last last fir3st
sed '/first/Ii This line to be added' file
Si vous voulez enregistrer une frappe, essayez awk. Je ne pense pas que sed a cette option
awk -v IGNORECASE="1" '/first/{your logic}' file
Tu peux essayer
sed 's/first/somethingelse/gI'
Pour les versions de awk qui ne comprennent pas la variable spéciale IGNORECASE
, vous pouvez utiliser quelque chose comme ceci:
awk 'toupper($0) ~ /PATTERN/ { print "ssortingng to insert" } 1' file
Convertissez chaque ligne en majuscule avant de tester si elle correspond au modèle et, le cas échéant, imprimez la chaîne. 1
est la condition vraie la plus courte, donc awk fait la chose par défaut: { print }
.
Pour utiliser une variable, vous pouvez utiliser ceci:
awk -v var="$foo" 'BEGIN { pattern = toupper(foo) } toupper($0) ~ pattern { print "ssortingng to insert" } 1' file
Cela passe la variable shell $foo
et la transforme en majuscule avant le traitement du fichier.
Un peu plus court avec bash serait d’utiliser -v pattern="${foo^^}"
et de sauter le bloc BEGIN
.