sed:是否有一个选项可以替换每行匹配的第N个和第M个匹配项?
问题描述:
我相信我在问模式标志。sed:是否有一个选项可以替换每行匹配的第N个和第M个匹配项?
我所熟悉的全球格局“g”标志
sed 's/pattern/sub/g'
而且我知道我可以通过使用一些替代比赛的第N次出现。
sed 's/pattern/sub/2'
但是假设我想替代线路上的第N个第m匹配。
实施例: 删除以下字符串的第三和第五字
输入:“一二三四五六”
输出:“一二四六”
答
这可能适用于您(GNU sed):
sed -r 's/\S+\s*//5;s///3' file
这将删除第五个,然后是第三个非间隔,然后是可能间隔的字符组。
N.B.移除是颠倒的,即5和3,以便以前的移除不会影响下一个移除。
+0
我把它添加到我的sed脚本库.. 。 – SLePort
你可以用'echo'一二三四五六'对于给定的样本,切割-d''-f1-2,4,6-'...(注意你的措辞与样本不匹配)...使用'sed',你可以使用多个'sed'/ pattern /子/ 2' ; S /模式/子/ 3',但要小心的是'3'在第二子实际上是'4th'为第一子打掉了一个'pattern' – Sundeep
我固定我的样本 – Kreganthus