gpt4 book ai didi

regex - SED 中至少有 2 个或更多数字的句子

转载 作者:行者123 更新时间:2023-12-04 18:31:18 24 4
gpt4 key购买 nike

仅使用 SED (ubuntu20.4),我需要打印至少有 2 个或更多数字的句子。
然后,只打印句子的前两个单词。
我能够执行第二部分,但第一个目标,我不知道如何执行。
这是文件:

 ab      c1d
dea 1 a zz7 www44
xy12 abc xyz
xy1 ab XYZ
xy ab X2YZ 3
这就是我到目前为止所做的:
sed -E "s/^[ ]*([^ ]+[ ]+[^ ]+).*/\1/" $* > 123

最佳答案

如果您只想使用 sed打印包含至少 2 个数字的字符串的前 2 个单词:

sed -nE '/[0-9]{2,}/p' ./yourFile.txt | sed -E 's/^\s*(\S+\s+\S+).*$/\1/'
  • /[0-9]{2,} : 至少包含 2 位数字的字符串
  • /^\s*(\S+\s+\S+).*$ : 以 0 或多个空格开头的行,然后捕获一组 (1 or many non space char)(1 or many space char)(1 or many non space char)然后是任何

  • 例子 :
    输入 :
     ab      c1d
    dea 1 a zz7 www44
    xy12 abc xyz
    xy1 ab XYZ
    xy ab X2YZ 3
    输出 :
    dea   1
    xy12 abc
    如果您想摆脱每行前两个单词之间的多空格字符,您可以将其再通过管道传输一次 sed :
    sed -nE '/[0-9]{2,}/p' ./yourFile.txt 
    | sed -E 's/^\s*(\S+\s+\S+).*$/\1/'
    | sed -E 's/\s+/ /'
  • s/\s+/ / : s对于替代品,\s+用于捕获所有连续的空格字符,/ /仅用一个空格字符
  • 替换它

    所以在这种情况下输出将是:
    dea 1
    xy12 abc

    关于regex - SED 中至少有 2 个或更多数字的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65954198/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com