sed:是否有一个选项可以替换每行匹配的第n次和第m次出现?

sed:是否有一个选项可以替换每行匹配的第n次和第m次出现?,sed,string-substitution,Sed,String Substitution,我想我是在问有关图案标志的问题 我熟悉全局模式标志“g” sed's/pattern/sub/g' 我知道我可以用一个数字来代替匹配的第n次出现 sed's/pattern/sub/2' 但是假设我想替换一条线上的第n个和第m个匹配 示例: 删除以下字符串的第3个和第5个单词 输入:“一二三四五六” 输出:“一二四六”这可能适合您(GNU使用): 这将删除第五个和第三个非间隔字符,然后是可能的间隔字符组 注意:移除是反向的,即5然后3,这样之前的移除不会影响下一个。对于给定的样本,您可以使用ec

我想我是在问有关图案标志的问题

我熟悉全局模式标志“g”

sed's/pattern/sub/g'

我知道我可以用一个数字来代替匹配的第n次出现

sed's/pattern/sub/2'

但是假设我想替换一条线上的第n个和第m个匹配

示例: 删除以下字符串的第3个和第5个单词

输入:“一二三四五六”

输出:“一二四六”

这可能适合您(GNU使用):

这将删除第五个和第三个非间隔字符,然后是可能的间隔字符组


注意:移除是反向的,即5然后3,这样之前的移除不会影响下一个。

对于给定的样本,您可以使用
echo“一二三四五六”| cut-d'-f1-2,4,6-
。。。(请注意,您的措辞与样本不匹配)。。。使用
sed
可以使用多个子
sed's/pattern/sub/2';s/pattern/sub/3
但必须小心,第二个子中的
3
实际上是
4th
,因为第一个子清除了一个
模式
我修复了我的样本
sed -r 's/\S+\s*//5;s///3' file