sed:是否可以选择替换每行匹配项的第 N 和第 M 次出现?
sed: Is there an option to substitute the Nth AND Mth occurrence of a match per line?
我想我问的是模式标志。
我熟悉全局模式标志'g'
sed 's/pattern/sub/g'
而且我知道我可以用数字替换匹配项的第 N 次出现。
sed 's/pattern/sub/2'
但假设我想替换一行中的第 N 个和第 M 个匹配项。
示例:
去掉下面字符串的第3个和第5个字
输入: "one two three four five six"
输出: "one two four six"
这可能适合您 (GNU sed):
sed -r 's/\S+\s*//5;s///3' file
这将删除第五个,然后是第三个非间隔字符,然后是可能的间隔字符组。
N.B。移除是相反的,即 5 然后是 3,这样前一个移除不会影响下一个。
我想我问的是模式标志。
我熟悉全局模式标志'g'
sed 's/pattern/sub/g'
而且我知道我可以用数字替换匹配项的第 N 次出现。
sed 's/pattern/sub/2'
但假设我想替换一行中的第 N 个和第 M 个匹配项。
示例: 去掉下面字符串的第3个和第5个字
输入: "one two three four five six"
输出: "one two four six"
这可能适合您 (GNU sed):
sed -r 's/\S+\s*//5;s///3' file
这将删除第五个,然后是第三个非间隔字符,然后是可能的间隔字符组。
N.B。移除是相反的,即 5 然后是 3,这样前一个移除不会影响下一个。