我有一个名为new.samples.dat的文件
-4.5000000000E-01 8.0000000000E+00 -1.3000000000E-01
5.0000000000E-02 8.0000000000E+00 3.4000000000E-01
...
Run Code Online (Sandbox Code Playgroud)
我必须在另一个名为Remaining.Simulations.dat的文件中搜索此文件的所有这些数字,并将它们复制到另一个文件中.我确实喜欢这个
for sample_index in $(seq 1 100)
do
sample=$(awk 'NR=='$sample_index'' new.samples.dat)
grep "$sample" Remaining.Simulations.dat >> Previous.Training.dat
done
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但它不会将所有$ sample复制到Previous.Training.dat,即使我确定这些都在Remaining.Simulations.dat中出现此错误
grep: invalid option -- '.'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
Run Code Online (Sandbox Code Playgroud)
你知道怎么解决吗?谢谢
这是因为你正在尝试grep之类的东西,-4.5
并将grep
其作为一个选项而不是搜索字符串.如果您--
用来表示没有更多选项,这应该可行:
pax> echo -4.5000000000E-01 | grep -4.5000000000E-01
grep: invalid option -- '.'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
pax> echo -4.5000000000E-01 | grep -- -4.5000000000E-01
-4.5000000000E-01
Run Code Online (Sandbox Code Playgroud)
此外,如果您将字符串传递7.2
给grep
,它将匹配任何包含7
后跟任何字符的行,后跟2
:
.
视为特殊字符; 和7.2
也会匹配47.2
,7.25
等等.