J'ai un fichier avec ces lignes
G8 = P(G1,G3)
G9 = P(G3,G4)
G12 = P(G2,G9)
G15 = P(G9,G5)
G16 = P(G8,G12)
G17 = P(G12,G15)
J'ai besoin de la sortie comme
G1,G3
G3,G4
.....
Comment puis-je le faire avec la commande sed / grep ou en utilisant perl?
-F
vous permet de choisir quel (s) personnage (s) awk utilisera pour diviser la ligne en champs. Ici, je lui donne une classe de caractères ([]
) composée de parenthèses ouvrantes et fermantes. Il va donc diviser la ligne(
indéfiniment)
. En conséquence, le 2ème champ sera le contenu des parenthèses. Par exemple, avec la chaîneG8 = P(G1,G3)foo
,$1
seraG8 = P
,$2
seraG1,G3
et$3
seraitfoo
.Il y a plus d'une façon de le faire:
ou:
la source
Cela recherche la parenthèse ouvrante, l'ignore, puis imprime tous les caractères non parenthèses fermés qui suivent.
Nécessite GNU grep
la source
sed 's/^.*(//;s/)$//' /path/to/file
Pour décomposer cela:
sed
est les
tream itored
.'s/^.*(//;s/)$//'
est le script envoyésed
, qui se décompose comme suit:la source
la source
la source
awk -F"[()]" '{print $2}' file
comme dans la réponse de