【问题标题】:transpose one set of characters into another set of characters in Splunk在 Splunk 中将一组字符转置为另一组字符
【发布时间】:2018-05-24 14:42:24
【问题描述】:

我需要使用一个替换正则表达式和 5 个捕获组替换西班牙字母表的 5 个元音中的所有重音符号。

在我的文本中,我有 áéíóúàèìòù 等等。到目前为止,我有这个正则表达式:

s/(=?[àáÀÁ])|(=?[èéÈÉ])|(=?[ìíÌÍ])|(=?[òóÒÓ])|(=?[ùúÙÚ])/$1$2$3$4$5/g

但是这个正则表达式在每个组上给了我相同的结果。

有没有办法在每个不同的组上获得不同的值?像这样:

group1 ($1)-> A

group2 ($2) -> E

group3 ($3) -> 我

group3 ($4) -> O

group3 ($5) -> U

我知道如何使用 5 种不同的正则表达式来做到这一点,但我只需要一个。有什么想法吗?

非常感谢!!

【问题讨论】:

    标签: regex substitution splunk regular-language rex


    【解决方案1】:

    我不知道用一个普通的正则表达式来做到这一点(尽管我很想被证明是错误的。)

    sed 针对这种情况有一个专用命令y / transliterate

    sed -e 'y/àáÀÁèéÈÉìíÌÍòóÒÓùúÙÚ/aaAAeeEEiiIIooOOuuUU/'
    

    但是,它不会帮助您从要音译的字符前面删除前导 =。你可以组合两个 sed 命令吗?例如。

    sed -e '{ y/àáÀÁèéÈÉìíÌÍòóÒÓùúÙÚ/AAAAEEEEIIIIOOOOUUUU/; s/=\([AEIOU]\)/\1/g; }'
    

    【讨论】:

    • 非常感谢 Zak 的回答。你知道是否有办法用正则表达式使用替换来进行这种转换?像这样:s/àáÀÁèéÈÉìíÌÍòóÒÓùúÙÚ/AAAAEEEEIIIIOOOOUUUU/g谢谢你的帮助!
    • @Sircam 恐怕不会。这就是为什么像 sed 这样的工具和像 Perl 这样的语言都有音译命令的原因。 Rex 使用 Perl,所以也许你可以使用 Perl 的 y/// 命令?
    • 非常感谢@Zak。我只是想将西班牙语字符“àáÀÁèéÈÉìíÌÍòóÒÓùúÙÚ”替换为“aaAAeeEEiiIIooOOuuUU”,并用你告诉我的 sed 来完美地工作。现在我需要弄清楚 Splunk 如何(以及是否)能够做到这一点。再次感谢!!
    • 别担心,@Sircam!我已经编辑了您的帖子,以在标题和标签中包含 splunk。这应该可以帮助您找到可以建议特定于 splunk 的方法来解决您的问题的人。
    • 非常感谢@Zak! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2015-02-15
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多