【问题标题】:sed: Is there an option to substitute the Nth AND Mth occurrence of a match per line?sed:是否可以选择替换每行匹配的第 N 次和第 M 次匹配?
【发布时间】:2017-03-16 15:46:52
【问题描述】:

我相信我问的是模式标志。

我熟悉全局模式​​标志 'g'

sed 's/pattern/sub/g'

而且我知道我可以用数字代替匹配的第 N 次出现。

sed 's/pattern/sub/2'

但假设我想替换一行中的第 N 个 AND Mth 匹配项。

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

输入:“一二三四五六”

输出:“一二四六”

【问题讨论】:

  • 您可以将echo 'one two three four five six' | cut -d' ' -f1-2,4,6- 用于给定示例...(注意您的措辞与示例不匹配)...使用sed 您可以使用多个子sed 's/pattern/sub/2'; s/pattern/sub/3,但必须小心第二个子中的3 实际上是4th,因为第一个子消灭了一个pattern
  • 我修复了我的样本

标签: sed string-substitution


【解决方案1】:

这可能对你有用(GNU sed):

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

这将删除第五个,然后是第三个非空格字符,然后是可能的空格字符组。

注意删除是相反的,即 5 然后 3,这样前一个删除不会影响下一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2023-02-26
    • 2012-03-07
    • 1970-01-01
    相关资源
    最近更新 更多