2017-03-16 93 views
0

我相信我在問模式標誌。sed:是否有一個選項可以替換每行匹配的第N個和第M個匹配項?

我所熟悉的全球格局「g」標誌

sed 's/pattern/sub/g'

而且我知道我可以通過使用一些替代比賽的第N次出現。

sed 's/pattern/sub/2'

但是假設我想替代線路上的第N個第m匹配。

實施例: 刪除以下字符串的第三和第五字

輸入:「一二三四五六」

輸出:「一二四六」

+2

你可以用'echo'一二三四五六'對於給定的樣本,切割-d''-f1-2,4,6-'...(注意你的措辭與樣本不匹配)...使用'sed',你可以使用多個'sed'/ pattern /子/ 2' ; S /模式/子/ 3',但要小心的是'3'在第二子實際上是'4th'爲第一子打掉了一個'pattern' – Sundeep

+0

我固定我的樣本 – Kreganthus

回答

2

這可能適用於您(GNU sed):

sed -r 's/\S+\s*//5;s///3' file 

這將刪除第五個,然後是第三個非間隔,然後是可能間隔的字符組。

N.B.移除是顛倒的,即5和3,以便以前的移除不會影響下一個移除。

+0

我把它添加到我的sed腳本庫.. 。 – SLePort

相關問題