A sed solution
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/< regexp>/<替換>/g會替換匹配< regexp>的所有行的每個部分,替代<替換>。
在這種情況下<的regexp>是E S:.* ch [0-9]+
這意味着:
- 搜索ES:
- 然後SEACH的一切,直到看到
- 的空間前述CH後跟一個空格,一個或多個數字和另一個空格
和<替換>是空字符串,因此它有效地刪除了匹配行的部分它。
-r開關信號sed我們使用的是'擴展'的正則表達式,通常它們更清晰,因爲它們不需要標準sed regexps所需要的那麼多反斜槓。
它總是相同的7個字段,你需要刪除? – 2010-06-22 20:13:06
@Jed:好點,如果答案是肯定的,'awk'可能是更好的(或至少更優化的)工具。 – 2010-06-22 20:15:53