Решение 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
Это делается с помощью подстановки регулярного выражения.Команда s / / / g заменяет каждую часть каждой строки, соответствующую для .
. В этом случае равно E S:.* ch [0-9]+
, что означает:
- ищите ES:
- , затем ищите все, пока не увидите
- пробел, предшествующий ch, за которым следует пробел, одна или несколько цифр и еще один пробел
И - пустая строка, поэтому она эффективно удаляет соответствующие ей строки.
Ключ -r указывает на то, что мы используем «расширенные» регулярные выражения, которые обычнопонятнее, потому что им не нужно так много обратной косой черты, которая потребовалась бы для регулярных регулярных выражений sed.