N'hésitez pas à modifier le titre car il ne correspond pas à ma question 100%
J'ai quelque chose comme ça dans un fichier:
junk
long_ass_string "/I/want/this/$code/$name" long_ass_string
junk
Clarification de l'exemple:
Jusqu'à présent j'ai essayé ...
grep -w "/I/want/this/*" file
# sorties long_ass_string
[.____] grep -o "/I/want/this/*" file
# sorties/je/veux/ceci /
Aimerait éviter d'utiliser la solution d'obtenir uniquement des caractères supplémentaires avant et/ou après
J'irais avec grepping toutes les cordes puis trier avec un deuxième grep, par exemple:
grep -o '"[^"]*"' file
Production:
"/I/want/this/$code/$name"
Cette expression /I/want/this/*
allumettes /I/want/this
, puis zéro ou plus de caractères slash, vous vouliez probablement dire: /I/want/this/.*
qui correspond à /I/want/this/
et zéro ou plus de caractères.
si je vous comprends bien, vous voulez vous débarrasser de la première carte $ et une variable de nom $ dans chaque ligne. Vous pouvez tuyer votre résultat pour couper pour cela. Suite à votre exemple:
grep "/I/want/this/" myfile.txt | cut -d '/' -f 1-4,7-
avec -d
Vous définissez le délimiteur (le symbole /
par exemple) et avec -f
Vous indiquez que le champ à saisir.
[.____] Dans ce cas, du délimiteur 1 à 4 (/I/want/this/
) Et tous les champs qui arrivent après le septième délimiteur (qui se fait avec argument 7-
) Comme ça, vous enlevez /$code/$name
qui sont entre 4ème et 7e délimiter dans toutes les lignes correspondant à l'expression régulière définie.
echo "/I/want/this/NOT/THAT/and/everythingelse" | grep "/I/want/this/" | cut -d '/' -f 1-4,7-
/I/want/this/and/everythingelse