Une solution sed
linux-t77m:$ more st.txt
23920 E S:1 R:2 C:14 L:5 ch 80 7279 1113 5272 -342 1168 5642 -347 1265 5587
23921 E S:1 R:2 C:14 L:6 ch 1 4605 1267 4586 11 1331 4587 -31 1306 4692
linux-t77m:$ sed -r "s/E S:.* ch [0-9]+ //g" st.txt
23920 7279 1113 5272 -342 1168 5642 -347 1265 5587
23921 4605 1267 4586 11 1331 4587 -31 1306 4692
Cela se fait avec une substitution d'expression régulière. La commande s/< regexp>/< substitution>/g remplace chaque partie de chaque ligne correspondant < regexp> pour la substitution <>.
Dans ce cas < regexp> est E S:.* ch [0-9]+
ce qui signifie:
- recherche ES:
- Seach puis pour tout jusqu'à ce que vous voyez
- un espace précédent ch suivi d'un espace, un ou plusieurs chiffres et un autre espace
Et < substitution> est la chaîne vide, de sorte qu'il supprime efficacement les parties des lignes correspondant il. L'option -r signale que nous utilisons des expressions régulières 'étendues', qui sont généralement plus claires car elles n'ont pas besoin d'autant de barres obliques inverses que celles requises par les expressions rationnelles standard.
Est-ce toujours les mêmes 7 champs que vous devez supprimer? –
@Jed: bon point, et si la réponse est oui, 'awk' peut être un meilleur outil (ou au moins plus optimisé) pour le travail. –