J'ai un fichier où chaque ligne contient une phrase dans laquelle un mot se trouve entre le caractère> et <. Par exemple:
Martin went shopping at >Wallmart< and lost his wallet
French food >tastes< great
Je cherche une commande à courir de la coquille qui imprimera le mot à l'intérieur ">" et "<" pour chaque ligne.
Merci d'avance.
Pour awk
:
awk -F '[><]' '{print $2}' file
Qui définit le séparateur de champ comme étant soit >
ou <
et imprime le deuxième champ qui est ce qui est entre ces deux personnages.
Pour sed
:
sed 's|.*>\(.*\)<.*|\1|' file
Qui utilise le () pour imprimer ce qui se passe entre le >
et quoi que ce soit à venir après et le <
Et tout ce qui vient avant.
Le résultat
Wallmart
tastes
Qu'en est-il de grep
?
grep -oP "(?<=\>).*(?=<)" file
Sortir:
Wallmart
tastes
ÉDITER:
Après @toby Speight Commentaire, et en supposant qu'entre> et <il n'y a que des mots, pour éviter de correspondre> et <dans d'autres contextes, la commande devrait être
grep -oP "(?<=\>)\w+(?=<)" file
J'ai essayé avec la commande ci-dessous et ça a fonctionné bien
awk -F ">" '{print $2}' filename| sed "s/<.*//g"
sortir
Wallmart
tastes
python
#!/usr/bin/python
o=open('filename','r')
for i in o:
k=i.split('>')[1].split('<')[0].strip()
print k
sortir
Wallmart
tastes