如何使用 sed 根据同一字符串的输入来匹配任何一种模式

如何使用 sed 根据同一字符串的输入来匹配任何一种模式

我有一个字符串adajuikodlobauvk01adajuikoplobauvk01

在这两个字符串中,差异是dp

如果字符串是adajuikodlobauvk01adajuikoplobauvk01,则预期输出是adajuiko

  • 第一个字符串的代码工作正常:
    echo adajuikodlobauvk01 | sed -e 's/\([a-z]*\)d.*/\1/g' -e 's/\([a-z]*\)p.*/\1/g'
    adajuiko
    
  • 对于第二个字符串,输出与预期不同:
    echo adajuikoplobauvk01 | sed -e 's/\([a-z]*\)d.*/\1/g' -e 's/\([a-z]*\)p.*/\1/g'
    a
    

请帮助根据同一字符串的给定输入来匹配任何一种模式。

答案1

为了获得预期的adajuiko输出,尽管输入是 或adajuikodlobauvk01adajuikoplobauvk01(管道)sed字符后面的代码|必须是这样的:

sed -e 's/\([a-z]*\)[dp].*/\1/g'

在哪里[dp]意思它匹配d或者p

相关内容