【问题标题】:How i can used sed or grep with this我如何使用 sed 或 grep
【发布时间】:2019-06-05 02:40:56
【问题描述】:

我有一个包含 20000 行的文本文件,一些行内容 1 个符号或 2 个或 3 个来自此范围:

[\x{0990}-\x{099D}]

我想在该行的最后一个符号之后添加新行\n,例如: 之前:

Alpha beta @#$ gama

之后:

Alpha beta @#$
gama

【问题讨论】:

    标签: sed newline


    【解决方案1】:

    字符是ঐ঑঒ওঔকখগঘঙচছজঝ,你可以在sed中显式使用它们:

    sed -E 's/(ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g'
    

    完整的就地命令:

    sed -i -E 's/(ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g' file; # GNU sed
    sed -E -i '' 's/(ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g' file; # Free BSD sed
    

    查看online sed demo

    这里,

    • (ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3} 是匹配所需字符 1、2 或 3 次的括号表达式
    • [[:space:]]* - 0+ 个空格。

    &\n 替换模式会插入整个匹配项,然后添加一个换行符。

    提示:要修剪这些字符后的空格,请使用

    sed -E 's/((ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3})[[:space:]]*/\1\n/g' 
    

    【讨论】:

    • 谢谢它的工作,请我如何将符号转换为 unicode,比如“a”到 \04321。
    • @Tomatow 我正在使用this site 快速检查这些内容。
    【解决方案2】:

    你需要搜索字符串:

    ([!@#$%^&*()_+=~`-]{1,3})([^!@#$%^&*()_+=~`-]*)$
    

    并替换为:

    \1\n\2
    

    测试here

    符号列表可以根据您的需要进行调整。我在键盘上的数字键上添加了大部分符号。

    【讨论】:

      【解决方案3】:

      你的意思是这样的?

      sed 's/[\x0990-\x099D]\{1,3\} /&\n/' file.txt
      

      解释

      s                              # use substitution
      /                              # separator
      [\x0990-\x099D]\{1,3\}         # 1 to 3 symbols
      /                              # separator
      &\n                            # replace with symbols\n
      /                              # separator
      

      【讨论】:

        猜你喜欢
        • 2013-09-09
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 2013-07-07
        • 1970-01-01
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多