正则表达式 - 当价格可能包含正斜杠时查找缺少的货币符号

时间:2016-12-07 17:37:25

标签: regex grep

所以我认为这很容易,但我无法绕过它。 我需要GREP以下列表,只找到缺少欧元符号的字符串。

x80/90
x90€
x80/95
x80/95€
x80/90
x90

然后我需要添加缺少的欧元符号。 我真的以为我可以管理这么简单的例子,但它让我难过。

谢谢大家。

2 个答案:

答案 0 :(得分:1)

找到缺少欧元符号的行,您可以使用带有反向匹配的grep(参数-v)

grep -v '€' < ./your/file

替换,您可以使用sed,如下所示:

sed -e '/€/!s/.\+/\0€/' < ./your/file

下面...

  • /€/尝试将欧元符号作为前提条件。
  • !s/.\+/\0€/仅对未满足前提条件的行进行替换。
  • .\+至少需要一个字符,以便空行不会获得欧元符号。
  • 如果您的案例不需要区分,!s/$/€/也可以。

答案 1 :(得分:0)

以下是使用perl

执行所需任务的单行代码
perl -pi -e 's/^(?!.*€)(.*)/\1€/g' inputFile
  • -p处理并逐行打印
  • -i for inplace replacement

如果您只想使用grep检测这些行,可以使用-P选项支持Perl regex并使用negative lookahead

grep -P '^(?!.*€)' inputFile