使用SED(和正则表达式)从数字后到数字前交换减号。

阿波约斯特

我有一个带有以下行的文本文件:

  201174480 11-01-1911 J Student            25-07 11585 2 0        SPOED BEZORGEN                       1ST      25,00
  320819019 11-01-1911 T. Student           28-07 13561 1 15786986 DESLORATADINE TABL OMH 5MG          60ST       3,60
  706059901 11-01-1911 ST Student-Student   30-06 14956 1 15356221 METOPROLOLSUCC RET T 100MG         180ST      12,90-

我想用SED将此行更改为:

  201174480 11-01-1911 J Student            25-07 11585 2 0        SPOED BEZORGEN                       1ST      25,00
  320819019 11-01-1911 T. Student           28-07 13561 1 15786986 DESLORATADINE TABL OMH 5MG          60ST       3,60
  706059901 11-01-1911 ST Student-Student   30-06 14956 1 15356221 METOPROLOLSUCC RET T 100MG         180ST      -12,90

所以我想用SED交换减号,以便我得到12,90而不是12,90-。我试过了:

尝试1:

sed 's/\([0-9.]\+\)-/-\1/g' file.txt > file1.txt

尝试2:

sed 's/\([0-9].\+\)-$/-\1/g' file.txt > file1.txt

因此,REGEX肯定有问题,但我不太了解。请帮忙。

威克多·斯特里比尤(WiktorStribiżew)

您可以使用

sed 's/\([0-9][0-9,.]\+\)-\($\|[^0-9]\)/-\1\2/g'

观看在线演示

关键是,在匹配数字和a -(请参阅\([0-9][0-9,.]\+\)-)之后,应该在字符串的末尾或非数字(\($\|[^0-9]\))的末尾因此,我们现在有2个捕获组,这就是为什么我们需要替换模式(\2)中的第二个反向引用

.在括号表达式中添加了一个点,以防万一您使用混合数字格式,如果始终用逗号作为小数点分隔符,则可以将其删除。

图案细节

  • \([0-9][0-9,.]\+\) -组1捕获
    • [0-9] -一个数字
    • [0-9,.]\+ -一个或多个数字,逗号或点
  • - -文字连字符
  • \($\|[^0-9]\)-组2捕获字符串的末尾$或非数字([^0-9]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Filebeat正则表达式-数字前的空格

来自分类Dev

正则表达式,数字后跟字母

来自分类Dev

正则表达式查找数字后跟字母

来自分类Dev

在熊猫中使用正则表达式去除数字前面的点

来自分类Dev

如何用正则表达式匹配数字和减号?

来自分类Dev

如何使用正则表达式在任何字母之间和任何数字后面插入逗号

来自分类Dev

使用正则表达式在至少一个数字后允许逗号

来自分类Dev

如何在Python中使用正则表达式提取关键字后的数字?

来自分类Dev

使用egrep和正则表达式搜索数字

来自分类Dev

匹配正则表达式:[数字前的所有内容],[数字]

来自分类Dev

正则表达式获取数字和数字后的字符串

来自分类Dev

使用正则表达式在数据框中的括号或数字前提取前导子字符串

来自分类Dev

使用正则表达式3个表达式后获取数字和字符

来自分类Dev

如何使用正则表达式交换红宝石字符串中的数字位置?

来自分类Dev

excel中的正则表达式,用于数字前的斜线

来自分类Dev

正则表达式以防止特定字符出现在数字前

来自分类Dev

正则表达式以防止特定字符出现在数字前

来自分类Dev

正则表达式匹配4位数字前的所有内容

来自分类Dev

寻找正则表达式以匹配数字前后

来自分类Dev

如何在python中使用正则表达式删除包含数字后跟字符的标记?

来自分类Dev

Java正则表达式,数字,加号,减号,井号

来自分类Dev

Java正则表达式,数字,加号,减号,井号

来自分类Dev

使用正则表达式提取所有数字和单词数字

来自分类Dev

使用正则表达式Java匹配数字和字母/数字(分隔)

来自分类Dev

如何更改正则表达式以处理数字后的_符号?

来自分类Dev

正则表达式以匹配空格和数字后面的单词

来自分类Dev

Java正则表达式在数字后拆分字符串

来自分类Dev

如何用正则表达式得到数字后的字符

来自分类Dev

Java正则表达式中数字后不跟变量(字母)

Related 相关文章

  1. 1

    Filebeat正则表达式-数字前的空格

  2. 2

    正则表达式,数字后跟字母

  3. 3

    正则表达式查找数字后跟字母

  4. 4

    在熊猫中使用正则表达式去除数字前面的点

  5. 5

    如何用正则表达式匹配数字和减号?

  6. 6

    如何使用正则表达式在任何字母之间和任何数字后面插入逗号

  7. 7

    使用正则表达式在至少一个数字后允许逗号

  8. 8

    如何在Python中使用正则表达式提取关键字后的数字?

  9. 9

    使用egrep和正则表达式搜索数字

  10. 10

    匹配正则表达式:[数字前的所有内容],[数字]

  11. 11

    正则表达式获取数字和数字后的字符串

  12. 12

    使用正则表达式在数据框中的括号或数字前提取前导子字符串

  13. 13

    使用正则表达式3个表达式后获取数字和字符

  14. 14

    如何使用正则表达式交换红宝石字符串中的数字位置?

  15. 15

    excel中的正则表达式,用于数字前的斜线

  16. 16

    正则表达式以防止特定字符出现在数字前

  17. 17

    正则表达式以防止特定字符出现在数字前

  18. 18

    正则表达式匹配4位数字前的所有内容

  19. 19

    寻找正则表达式以匹配数字前后

  20. 20

    如何在python中使用正则表达式删除包含数字后跟字符的标记?

  21. 21

    Java正则表达式,数字,加号,减号,井号

  22. 22

    Java正则表达式,数字,加号,减号,井号

  23. 23

    使用正则表达式提取所有数字和单词数字

  24. 24

    使用正则表达式Java匹配数字和字母/数字(分隔)

  25. 25

    如何更改正则表达式以处理数字后的_符号?

  26. 26

    正则表达式以匹配空格和数字后面的单词

  27. 27

    Java正则表达式在数字后拆分字符串

  28. 28

    如何用正则表达式得到数字后的字符

  29. 29

    Java正则表达式中数字后不跟变量(字母)

热门标签

归档