例如,文本文件有:有什麼方法可以獲得匹配圖案線的線數?
dfsdfsd
f
dsf
dsf
dsf
dsf
sdafadfdasfdsfd
sf
sdfasdfdasfdsfsdf
sd
fsdfdsaf
的話,我想找到一種方法SF
之前獲得SF 的行號,並插入一個段落在那裏做任何方式它在bash編程中???謝謝
例如,文本文件有:有什麼方法可以獲得匹配圖案線的線數?
dfsdfsd
f
dsf
dsf
dsf
dsf
sdafadfdasfdsfd
sf
sdfasdfdasfdsfsdf
sd
fsdfdsaf
的話,我想找到一種方法SF
之前獲得SF 的行號,並插入一個段落在那裏做任何方式它在bash編程中???謝謝
如果你想找出行號,你可以使用grep -n
。
如果你只是想插入前一行一條線,你可以使用sed
這樣的:
sed "s/sd/paragraph\nsd/" file
這將插入與「SD」線條以上文本「段落」。
要只爲第一場比賽做到這一點:
sed "0,/sd/ { s/sd/paragraph\nsd/ }" file
在這裏,我們只匹配行,直到第一個匹配的「SD」,因此任何後來的SD的不匹配。
謝謝。但如果有一個以上的SD,會發生什麼?我只想在第一個sd –
之前插入啊,然後它變得更加複雜:)我加入到我的答案中,這有幫助嗎? – carlpett
可能是一個正則表達式替換,用\n\nsf\n
替代\nsf\n
,或類似的東西取決於您的具體要求。沒有給你實際的行號,但如果你想要做的是插入一個段落,這可能不是必要的。
sed
有more commands而不僅僅是s///
。在每個匹配行之前插入文本:
sed '/pattern/ i \
text to be \
inserted goes \
here'
你想手動更換嗎,使用'vi'的東西? – iammilind
'grep -n'爲您提供匹配模式的行數... –
sed似乎是最合適的方式。我得到一個字符串並將其插入到匹配的模式之前。 –