【问题标题】:Regex search and replace - reformatting name正则表达式搜索和替换 - 重新格式化名称
【发布时间】:2015-12-19 03:31:29
【问题描述】:

我将三星 A411 中的所有手机联系人保存在一个大文件中,以便导入到三星 Galaxy S3 手机/联系人中。

只有一个字段我无法使用 Kate 进行标准的“替换”。这是我需要做的:

N:米老鼠

替换为..

N:鼠标;米奇;;;

【问题讨论】:

    标签: regex search replace contacts samsung-mobile


    【解决方案1】:

    使用 sed:

    sed -r 's/N:(\w*) (\w*)/N:\2;\1;;;/g' file.txt
    

    所用s command的解释:

    s/
       N:      # literal string "N:"          ┐
       (       # begin of capture group       │
          \w   # any word character           │
            *  # ...repeated 0 or more times  ├ regex
       )       # end of capture group         │
               # literal " " (space)          │
       (\w*)   # same capture group as above  ┘
    /
       N:      # literal string "N:"          ┐
       \2      # backreference to 2nd group   │
       ;       # literal ";"                  ├ replacement
       \1      # backreference to 1st group   │
       ;;;     # literal ";;;"                ┘
    /
       g       # apply to all matches         ] flags
    

    为了便于阅读,我使用了sed -r(扩展正则表达式)以避免在命令中转义每个括号。

    【讨论】:

    • 谢谢,几乎成功了。这是发生了什么输入 N:Mickey Mouse FN:Mickey Mouse 输出 N:Mouse;Mickey;;; N:鼠标;米奇;;; FN:鼠标;米奇;;; FN:鼠标;米奇;;;
    • 因此,“N:”记录被正确替换,但又被添加了进去。 “FN:”记录根本不应该被替换或添加到。
    • 决定使用上面“sed”的输出,然后手动编辑文件。谢谢你的帮助。 :)
    • 我修复了命令以避免这种情况。如果这可以解决您的问题,请将答案标记为已接受。
    • @etuardu - “N”记录现在很好,没有“N”重复。但是,“FN”行已被替换。根本不应该修改“FN”。
    【解决方案2】:

    “N”记录现在很好,没有“N”重复。然而, “FN”行已被替换。 “FN”不应修改为 全部。

    要仅替换以N: 开头的行,请插入^匹配行首),即。 e.

    sed -r 's/^N:…
    

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 2014-04-20
      • 2018-05-25
      • 2010-11-25
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多