2014-01-22 33 views
1

我有一個文本文件「走出去」像下面,字符串替換在一個文本文件

r 19.568805475 _16_ RTR --- 189 cbr 532 [13a 10 c 800] [energy 1.095631 ei 0.000 es 0.000 et 0.552 er 1.352] ------- [0:2 17:0 23 16] [189] 8 0 
f 19.568805475 _16_ RTR --- 189 cbr 532 [13a 10 c 800] [energy 1.095631 ei 0.000 es 0.000 et 0.552 er 1.352] ------- [0:2 17:0 22 8] [189] 8 0 
D 19.568805475 _16_ IFQ ARP 190 cbr 532 [13a 10 10 800] [energy 1.095631 ei 0.000 es 0.000 et 0.552 er 1.352] ------- [0:2 17:0 24 8] [190] 6 0 
r 19.569095175 _12_ MAC --- 0 ACK 38 [0 c 0 0] [energy 0.841123 ei 0.000 es 0.000 et 0.316 er 1.843] 
s 19.569306186 _2_ MAC --- 0 undefined 106 [0 ffffffff 2 800] [energy 0.889732 ei 0.000 es 0.000 et 0.633 er 1.477] ------- [2:255 -1:255 25 0] 

現在我想搜索與單詞「CBR」一條線,如果同樣符合「開始^ D「,我必須用」r「代替」^ D「。

例如,

D 19.568805475 _16_ RTR --- 189 cbr 532 [13a 10 c 800] [energy 1.095631 ei 0.000 es 0.000 et 0.552 er 1.352] 

上述線具有單詞 「CBR」,而行開始與 「d」。這裏我必須改變「D」的「r」

任何人都可以幫助我做到這一點?

感謝

回答

4

讓我們用sed此:

sed '/cbr/s/^D/r/' file 
     ^^^^^^^
     | | | | 
     | | | replace with "r" 
     | | starting with "D" 
     | replace 
    string containing "cbr" 

按基本sed s/findsomething/andreplace/' file語法。

它返回:

r 19.568805475 _16_ RTR --- 189 cbr 532 [13a 10 c 800] [energy 1.095631 ei 0.000 es 0.000 et 0.552 er 1.352] ------- [0:2 17:0 23 16] [189] 8 0 
f 19.568805475 _16_ RTR --- 189 cbr 532 [13a 10 c 800] [energy 1.095631 ei 0.000 es 0.000 et 0.552 er 1.352] ------- [0:2 17:0 22 8] [189] 8 0 
r 19.568805475 _16_ IFQ ARP 190 cbr 532 [13a 10 10 800] [energy 1.095631 ei 0.000 es 0.000 et 0.552 er 1.352] ------- [0:2 17:0 24 8] [190] 6 0 
r 19.569095175 _12_ MAC --- 0 ACK 38 [0 c 0 0] [energy 0.841123 ei 0.000 es 0.000 et 0.316 er 1.843] 
s 19.569306186 _2_ MAC --- 0 undefined 106 [0 ffffffff 2 800] [energy 0.889732 ei 0.000 es 0.000 et 0.633 er 1.477] ------- [2:255 -1:255 25 0] 
1

awk變化:

awk '/cbr/ {sub(/^D/,"r")}1' file