定義的位置通過搜索,並試圖(無正則表達式的專家),我已成功地處理使用SED或grep的文本輸出,並提取了一些線條,格式化這種方式,所有的文本列:sed的:動態刪除除通過圖案
Tree number 280:
1 0.500 1 node_15 6 --> H 1551.code
1 node_21 S ==> H node_20
Tree number 281:
1 0.500 1 node_16 S ==> M 1551.code
1 node_20 S --> H node_19
然後,使用
sed 's/^.\{35\}\(.\{9\}\).*/\1/' infile
,我得到想要的部分,加上一些輸出,我得到後來去掉(不是問題)。
Tree number 280:
6 --> H
S ==> H
Tree number 281:
S ==> M
S --> H
然而,C --> C
圖案的水平位置可以從文件到文件而改變,儘管它總是對準。有沒有辦法提取包含單個前後字符的-->
或==>
,無論它們在哪個列中找到?
Tree number #
部分不是必需的,也可以留空,但必須有一種分隔符。
UPDATE(另一種方法)
試圖用grep
,我發出
grep -Eo '(([a-zA-Z0-9] -- |[a-zA-Z0-9] ==)> [a-zA-Z0-9]|Changes)' infile
。
我的初始文件樣本如下,如果有人認爲更好,更有效的方法,或我的正則表達式的使用是瘋了,請評論!
..MISC TEXT...
Character change lists:
Character CI Steps Changes
----------------------------------------------------------------
1 0.000 1 node_235 H --> S node
1 node_123 S ==> 6 1843
1 node_126 S ==> H 2461
1 node_132 S ==> 6 1863
1 node_213 H --> I 1816
1 node_213 H --> 8 1820
..CT...
Character change lists:
Character CI Steps Changes
----------------------------------------------------------------
1 0.000 1 node_165 H --> S node
1 node_123 S ==> 6 1843
1 node_231 H ==> S 1823
..MISC TEXT...
做得好,因爲首先發生變化,它會給你一個列標題,正則表達式限制爲字母和數字,如果你想簡化一點,你可以說大寫或小寫字母的[a-Z]。 – 2014-11-05 13:08:19
grep -Eo'(([a-Z0-9] - | [a-Z0-9] ==)> [a-Z0-9] |變更)'infile – 2014-11-05 13:15:31