2011-07-18 21 views
1

例如,文本文件有:有什麼方法可以獲得匹配圖案線的線數?

dfsdfsd 
f 
dsf 
dsf 
dsf 
dsf 
sdafadfdasfdsfd 
sf 
sdfasdfdasfdsfsdf 
sd 
fsdfdsaf 

的話,我想找到一種方法SF

之前獲得SF 的行號,並插入一個段落

在那裏做任何方式它在bash編程中???謝謝

+0

你想手動更換嗎,使用'vi'的東西? – iammilind

+0

'grep -n'爲您提供匹配模式的行數... –

+0

sed似乎是最合適的方式。我得到一個字符串並將其插入到匹配的模式之前。 –

回答

0

如果你想找出行號,你可以使用grep -n

如果你只是想插入前一行一條線,你可以使用sed這樣的:

sed "s/sd/paragraph\nsd/" file 

這將插入與「SD」線條以上文本「段落」。

要只爲第一場比賽做到這一點:

sed "0,/sd/ { s/sd/paragraph\nsd/ }" file 

在這裏,我們只匹配行,直到第一個匹配的「SD」,因此任何後來的SD的不匹配。

+0

謝謝。但如果有一個以上的SD,會發生什麼?我只想在第一個sd –

+0

之前插入啊,然後它變得更加複雜:)我加入到我的答案中,這有幫助嗎? – carlpett

0

可能是一個正則表達式替換,用\n\nsf\n替代\nsf\n,或類似的東西取決於您的具體要求。沒有給你實際的行號,但如果你想要做的是插入一個段落,這可能不是必要的。

1

sedmore commands而不僅僅是s///。在每個匹配行之前插入文本:

sed '/pattern/ i \ 
text to be \ 
inserted goes \ 
here' 
相關問題