Comment faire pour afficher certaines colonnes d'un enregistrement à l'aide de sed
J'ai une liste comme ceci:
5678:robert dylan :d.g.m. :marketing :04/19/43 85000
Je veux afficher uniquement le nom et la désignation de la personne. Je veux utiliser sed
pour que. Comment dois-je faire?
- Vous n'êtes pas autorisé à utiliser
awk
oucut
etc? Êtes-vous spécifiquement à la recherche d'unsed
solution? - Oui il suffit de sed est autorisé.
Vous devez vous connecter pour publier un commentaire.
Mise à jour:
rendements
Explication:
Fonctionne en divisant la ligne en plusieurs lignes en fonction
:
, la suppression de la première, la troisième et dernière lignes, puis de les regrouper à nouveau.NOTE: Dans la dernière expression, vous pouvez spécifier ce qui sépare le nom de l'appellation en mettant quelque chose d'autre entre l'ensemble des
/ /
dans'N;s/\n/ /'
Précédente AWK solution:
Pas
sed
, maisawk
, il est assez naturel pour cela l'outil s'il est acceptable:rendements
Sinon, si vos données ont été stockées dans un fichier nommé
data.txt
:serait de produire le même résultat.
awk est vraiment bien adapté pour ce genre de tâches.
Explication:
-F
définit le séparateur de champ pour:
,print $2, $4
d'impression résultant des champs 2 et 4 respectivement. Vous pouvez utiliserprintf
pour le format de sortie aussi spécifique que vous avez besoin.sed
solution avec explication .. juste pour infosed
, j'ai été en mesure de simplifier la solution la plus. C'est juste pour votre référence future dans le cas où vous avez besoin de quelque chose de semblable et simple.Juste pensé que je goutte dans la solution à l'aide de
cut
produit:
Cela pourrait fonctionner pour vous:
Explication:
La gauche (LHS) de la commande de substitution dit:
[^:]*:
correspond à zéro ou plus non:
s'suivi par un:
- ce qui correspond à5678:
\([^:]*:\)
comme ci-dessus, mais restera dans les mémoires comme une référence arrière\1
- correspond àrobert dylan :
[^:]*:
comme ci-dessus, mais pas de retour de référence correspond àd.g.m. :
\([^:]*\)
comme ci-dessus (à l'exception de la:
mais restera dans les mémoires comme une référence arrière\2
- correspond àmarketing
:.*
un:
suivie par tout ce qui correspond à:04/19/43 85000
Le côté droit de la commande de substitution dit:
\1\2
remplacer le côté gauche, par la première et la deuxième références arrière.sed
, les références arrières semblent très utile .. merci.