I have a csv file full of values such as this:
0.00145423,3.03795e-05
I wanted to check that all the lines were consistent so I tried to grep for any unexpected characters like so...
grep '[^0-9,e-.]' myfile
In my mind it goes like this: find a line with any character []
that is not ^
a number 0-9
, comma ,
, letter e e
, hyphen -
(attempted to escape with
), or a period .
. However, hyphens still continue match.
[EDIT]This does not happen in python, only with bash/grep:
>>> re.search("[^0-9,e-.]", "0.00145423,3.03795e-05")
>>>
unsatisfying solution:
If I move the escaped hyphen to the end it works:
grep '[^0-9,e.-]' myfile
Putting the escaped hyphen next to the 0-9
range results in grep: Invalid range end
.
Can someone explain what's going on? Is this some bash argument parsing issue or something specific to grep?
bash4.3.33
, grep2.21
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…