J'ai des lignes de données qui ressemblent à ceci: Comment puis-je utiliser sed code> pour supprimer des parties de la chaîne après la 4ème colonne (_ séparé) pour chaque ligne.
Enfin cédant: p>
6 Réponses :
CUT code> est un meilleur ajustement.
sed 's/\(_[^_]*\)\{4\}$//'
sed -e 's/_[0-9][0-9]*_[+-]_contigs_full.fasta$//g' Still the cut answer is probably faster and just generally better.
Oui, coupé est bien meilleur et oui correspondant à l'arrière de chacun est plus facile.
J'ai enfin reçu une correspondance en utilisant le début de chaque ligne: P>
sed -r 's/(([^_]*_){3}([^_]*)).*/\1/' oldFile > newFile
sed -e 's/\([^_]*\)_\([^_]*\)_\([^_]*\)_\([^_]*\)_.*/\1_\2_\3_\4' infile > outfile Match "any number of not '_'", saving what was matched between \( and \), followed by '_'. Do this 4 times, then match anything for the rest of the line (to be ignored). Substitute with each of the matches separated by '_'.
Voici une autre possibilité:
sed -E -e 's|^([^_]+(_[^_]+){3}).*$|\1|'
awk aime jouer dans les champs: ou, plus généralement: p>