2011-05-07 3 views

Répondre

36
sed '/pattern/!d' file.txt 

Mais vous êtes en train de réinventer grep ici.

+6

Yup. Mais sed a ce drapeau astucieux - in-place que grep n'a pas. sed -i '!/Modèle/d' filename est beaucoup plus facile que grep 'pattern' filename> filename.tmp && mv filename.tmp nom – Geeklab

+0

Attention: fourni le drapeau quiet pour éviter les résultats à imprimer au terminal, ne réalisant pas -i déjà atteint cela en soi. Cela signifiait que toutes les lignes étaient supprimées, même celles correspondant au motif. – EriF89

2

Cela pourrait fonctionner pour vous:

sed -n '/matchingpattern/p' file.txt 

/.../ est une adresse qui peut avoir des actions attachées dans ce cas p.

2

Au lieu d'utiliser sed, ce qui est compliqué, utilisez grep.

grep matching_pattern file 

Cela devrait vous donner le résultat souhaité.

+0

+1 pour le «bon outil». mais sed peut modifier un fichier en place. –

1

grep est certainement mieux ... parce que c'est beaucoup plus rapide.

par exemple. en utilisant grep pour extraire toutes les données de séquence du génome pour le chromosome 6 dans un ensemble de données avec lesquels je travaille:

$ time grep chr6 seq_file.in > temp.out 

real 0m11.902s 
user 0m9.564s 
sys 0m1.912s 

par rapport à sed:

$ time sed '/chr6/!d' seq_file.in > temp.out 

real 0m21.217s 
user 0m18.920s 
sys 0m1.860s 

je l'ai répété 3x et ~ mêmes valeurs à chaque fois.

Questions connexes