Je souhaite sous-traiter le nom du fichier sous unix en utilisant la commande sed
.
Nom du fichier: Test_Test1_Test2_10082019_030013.csv.20191008-075740
Je veux que les caractères après le 3e tiret bas ou (tous les caractères après Test2) soient imprimés.
Est-ce que cela peut être fait en utilisant la commande sed
?
J'ai essayé cette commande
sed 's/^.*_\([^_]*\)$/\1/' <<< 'Test_Test1_Test2_10082019_030013.csv.20191008-075740'
mais cela donne le résultat comme 030013.csv.20191008-075740
J'en ai besoin de 10082019_030013.csv.20191008-075740
Merci Neha
3 Réponses :
Pourriez-vous s'il vous plaît essayer de suivre.
sed 's/[^_]*_[^_]*_[^_]_\(.*\)/\1/' Input_file
Ou selon la gentille suggestion de Bodo:
sed 's/\([^_]*\)_\([^_]*\)_\([^_]*\)_\(.*\)/\4/' Input_file
Pour supprimer du début à l'inclusion du 3ème trait de soulignement, vous pouvez utiliser
sed -r 's/^([^_]*_){3}//' <<< 'Test_Test1_Test2_10082019_030013.csv.20191008-075740'
Cela supprime la partie initiale qui se compose de 3 groupes de (n'importe quel nombre de caractères non-soulignés suivis d'un souligner). Le résultat est
10082019_030013.csv.20191008-075740
Si vous utilisez GNU sed
, vous pouvez le remplacer par des expressions régulières étendues et omettre les contre-obliques.
sed 's/^\([^_]*_\)\{3\}//' <<< 'Test_Test1_Test2_10082019_030013.csv.20191008-075740'
Cela pourrait fonctionner pour vous (GNU sed):
sed 's/_/\n/3;s/.*\n//;t;s/Test2/\n/;s/.*\n//;t;d' file
Remplacez le troisième _
par une nouvelle ligne, puis supprimez tout jusqu'à et y compris la première nouvelle ligne. Si cela réussit, renflouez et imprimez le résultat. Sinon, essayez la même méthode avec Test2
et si cela échoue, supprimez toute la ligne.
Qu'est-ce que tu as essayé jusque-là?
J'ai essayé cette commande ... sed 's /^.* ([^ ] *) $ / \ 1 /' <<< 'Test_Test1_Test2_10082019_030013.csv.20191008-075740', mais je reçois la sortie 030013.csv.20191008-075740. J'en ai besoin de 10082019_030013.csv.20191008-075740
@NehaSingh, Bien que vous ayez montré vos efforts, les commentaires ne sont pas destinés à ajouter du code, alors essayez toujours de les ajouter dans votre question elle-même, applaudissements et bon apprentissage.