J'ai une ligne avec des espaces au début, par exemple "Hello world". Je veux insérer cette ligne dans une ligne spécifique d'un fichier. par exemple, insérez "bonjour le monde" dans le fichier suivant
hello
world
résultat:
hello
hello world
world
J'utilise ce script sed:
sed -i "${line} i ${text}" $file
le problème est que je reçois ma nouvelle ligne sans les espaces:
hello
hello world
world
Vous pouvez échapper le caractère space
, par exemple pour ajouter 2 espaces:
sed -i "${line} i \ \ ${text}" $file
Ou vous pouvez le faire dans la définition de votre variable text
:
text="\ \ hello world"
Vous n'avez besoin que d'un \
pour saisir plusieurs blancs comme celui-ci
sed -i "${line} i \ ${text}" $file
$ a=" some string "
$ echo -e "hello\nworld"
hello
world
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/"
hello
some string .
world
Le .
a été ajouté dans la substitution ci-dessus pour démontrer que les espaces blancs de fin sont préservés. Utilisation sed "/world/ s/.*/${a}\n&/"
au lieu.