我有多行和某个字符的文件只能出现一次(在整个文件中);我需要一种方法来检查哪些文件存在。
假设我有
1. 00000
2. 00050
3. 05500
4. 00000
五只能发生一次。如何使用bash和 grep ?
将此文件标记为格式错误我想您首先要检查哪些行包含5.如果有多行,请停止。然后查看该行上是否有超过五个,如果是,请停止。有一个更好的方法吗?
现在我会通过
来计算线条grep "5" file | wc -l.
如果有多个,请停止。如果没有,继续那一行。那么我如何计算有多少5?起初我使用了5 {1},但这似乎不起作用 - 如果字符串是“55”它只匹配那里的每5个,而我需要最多1个。然后我想我会看到是否有超过5个,如果是,请停止。但是5 {2,}仅在彼此之后有多个5的情况下才有效。另一方面,
.*5.*5.*
只匹配2个或更多5个字,但它看起来很怪诞......
有什么更好的建议吗?我确定有,但现在是晚上,这就是我今天的大脑,对不起。记住,我只能使用grep。
答案 0 :(得分:3)
要确保字符串只包含一次5
,请使用正则表达式
^[^5]*5[^5]*$
如果需要5
出现一次或不出现,请使用正则表达式
^[^5]*5?[^5]*$
如果要匹配包含多个5
的字符串,请使用正则表达式
5.*5
答案 1 :(得分:0)
你可以这样做:
grep -o 5 file | wc -w
的说明:强>
grep -o
- 仅输出“匹配”(在情况下,“5”)
wc -w
- 计算“单词”(代币)